将具有数据列的行转换为具有键值列的多行

时间:2012-01-16 19:01:54

标签: sql sql-server stored-procedures

我在存储过程中有一个SELECT,它将数据输出为这种格式。

          A      B      C
rowkey    1      2      3

我需要把它变成这样的东西:

         key  value
rowkey   A    1
rowkey   B    2
rowkey   C    3

我应该如何将其转化为此?

我不允许触及SELECT语句,所以我应该找到一种方法来改变它,或者创建一个临时表。

1 个答案:

答案 0 :(得分:1)

如果您使用的是SQL 2005或更高版本,这应该可以帮助您...

您可以将内部SELECT的结果存储到表变量中,然后使用以下内容对其进行转换:

DECLARE @test TABLE (rowkey int identity, A int, B int, C int)

INSERT INTO @test (A, B, C)
VALUES (1, 2, 3)

SELECT rowkey, [Key], [Value]
FROM
(SELECT rowkey, A, B, C
FROM @test) t
UNPIVOT
( [Value] FOR [Key]  IN
    (A, B, C)
) AS u