Tsql 将行值转换为列(用T-SQL中的一袋键值对连接表)

Tsql 将行值转换为列(用T-SQL中的一袋键值对连接表),tsql,Tsql,我有两张桌子, 表1(Id、日期、信息1) 表2(Id、日期、nvarchar(50)键、nvarchar(50)值) 我希望连接这些表并获取行,其中键列中的每个值都是一个新列,值表中的值是行中的数据 例如: 表1第行: 1, 2010-01-01, 234 表2行: 1, 2010-01-01, 'TimeToProcess', '15' 1, 2010-01-01, 'ProcessingStatus', 'Complete' 所需的结果是一行,如下所示: 1, 2010-01-01,

我有两张桌子, 表1(Id、日期、信息1) 表2(Id、日期、nvarchar(50)键、nvarchar(50)值)

我希望连接这些表并获取行,其中键列中的每个值都是一个新列,值表中的值是行中的数据

例如:

表1第行:

1, 2010-01-01, 234
表2行:

1, 2010-01-01, 'TimeToProcess', '15'
1, 2010-01-01, 'ProcessingStatus', 'Complete'
所需的结果是一行,如下所示:

1, 2010-01-01, 234, '15', 'Complete'
其中列标题为(Id、日期、info1、TimeToProcess、ProcessingStatus)

这个转置看起来与PIVOT的工作原理类似,但我怀疑它无法工作,因为键、值列的nvarchar(50)类型,以及我被迫使用聚合函数,而实际上我并不需要它

我可以使用内部连接来实现这一点,但我知道的唯一方法是每个键使用1个内部连接,在我的情况下,这相当于6个内部连接,因为我有多少个度量


我怎样才能做到这一点?

使用
PIVOT
,您的思路是正确的。您可以对字符串值进行透视。使用
MIN
MAX
聚合函数。

谢谢,我知道了。我在为……写作时遇到了一个小问题。。在()语句中,因为我枚举了字符串值('value1','value2',等等),但这不起作用。就在我把引号去掉的那一刻,瞧!虽然我不明白为什么。我使用括号来完全限定将成为for语句中的列名:
for in([valuethattwillbecomeacolumnname])