将行值转置为列(在T-SQL中使用一包键值对连接表)

时间:2010-10-01 13:53:04

标签: tsql

我有两张桌子, table1(Id,date,info1) table2(Id,date,nvarchar(50)Key,nvarchar(50)Value)

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

示例:

table1行:

1, 2010-01-01, 234

table2行:

1, 2010-01-01, 'TimeToProcess', '15'
1, 2010-01-01, 'ProcessingStatus', 'Complete'

所需的结果如下:

1, 2010-01-01, 234, '15', 'Complete'

列标题是(Id,date,info1,TimeToProcess,ProcessingStatus)

这个转置看起来像它与PIVOT类似,但我无法让它工作 - 我怀疑 - 由于nvarchar(50)类型的Key,Value列以及我被迫使用的事实聚合函数,实际上我不需要它。

我可以使用内部联接来实现这一点,但我知道如何做到这一点的唯一方法是每个Key需要1个内部联接,在我的情况下,这个数量相当于6个内部联接,因为这是我有多少指标。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您与PIVOT走在正确的轨道上。您可以 PIVOT字符串值。使用MINMAX汇总功能。