将具有键列值的数据行转换为具有键值列的多行
问题描述:
我在存储过程中有一个SELECT
,该存储过程将数据输出为此格式。将具有键列值的数据行转换为具有键值列的多行
A B C
rowkey 1 2 3
我需要把它改造成这样的:
key value
rowkey A 1
rowkey B 2
rowkey C 3
我应该如何去把它变成这样?
我不允许触摸SELECT
声明,所以我应该找到一种方法来转换它,可能会创建一个临时表。
答
这应该让你去,如果你在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
这个答案可以告诉你在SQL服务器的一些方法: http://stackoverflow.com/questions/2113251/tsql-help-with-unpivot – 2012-01-16 19:06:58