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

问题描述:

我在存储过程中有一个SELECT,该存储过程将数据输出为此格式。将具有键列值的数据行转换为具有键值列的多行

  A  B  C 
rowkey 1  2  3 

我需要把它改造成这样的:

  key value 
rowkey A 1 
rowkey B 2 
rowkey C 3 

我应该如何去把它变成这样?

我不允许触摸SELECT声明,所以我应该找到一种方法来转换它,可能会创建一个临时表。

+1

这个答案可以告诉你在SQL服务器的一些方法: http://stackoverflow.com/questions/2113251/tsql-help-with-unpivot – 2012-01-16 19:06:58

这应该让你去,如果你在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