1

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

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 实现这一目标感到困惑

4

1 回答 1

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

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

于 2012-04-17T00:51:12.623 回答