垂直返回列

时间:2012-04-17 00:46:25

标签: sql sql-server-2008-r2

假设我有一个简单的选择查询,它返回以下内容:

ID   Name1 Name2 Description1 Description2 Notes1 Notes2
1     A     B       AA              BB       AAA    BBB
2     C     D       CC              DD       CCC    DDD

我想按如下方式返回数据集:

ID ColumnName    1st   2nd
1   Name           A   B
1   Description   AA   BB
1   Notes        AAA   BBB
2   Name           C   D
2   Description   CC   CC
2   Notes        DDD   DDD

在sql server 2008-r2中以任何方式执行此操作? 看起来这是PIVOT的工作,但是对于如何用PIVOT实现这一点感到困惑

1 个答案:

答案 0 :(得分:3)

你可以使用这个,假设这些值是静态的,或者不是那么多,用你的实际值修补它并不太痛苦:

SELECT ID, 'Name' ColumnName, Name1 '1st', Name2 '2nd'
FROM YourTable
UNION
SELECT ID, 'Description' ColumnName, Description1 '1st', Description2 '2nd'
FROM YourTable
UNION
SELECT ID, 'Notes' ColumnName, Notes1 '1st', Notes2 '2nd'
FROM YourTable

为什么数据规范化如此重要的另一个很好的例子。