Sql 垂直返回列

Sql 垂直返回列,sql,sql-server-2008-r2,Sql,Sql Server 2008 R2,假设我有一个简单的select查询,返回以下内容: 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

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

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
在SQLServer2008-r2中有没有这样做的方法?
看起来这是PIVOT的工作,但我不知道如何使用PIVOT实现这一点,假设值是静态的或不是太多,用实际值修补不会太痛苦:

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

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

如果select查询中的列可以是动态的,而不是没有动态SQL。是否必须使用SQL查询来完成?