【发布时间】:2015-09-04 14:33:53
【问题描述】:
Original
RecordKey Name Section1_Product Section1_Code Section2_Product Section2_Code ......
1 a ff 22
2 b gg 22
3 c hh 33
RecordKey Name Section Product Code ......
1 a 1 ff 22
1 a 2
2 b 1 gg 22
2 b 2
3 c 1 hh 22
3 c 2
我正在尝试将列还原为行。有些部分会有空值。
SELECT RecordKey
,Name
,'Num_of_Sections' = ROW_NUMBER() OVER (PARTITION BY RecordKey ORDER BY ID)
,Product
,Code
FROM (
SELECT RecordKey, Name, Section1_Product, Section1_Code, Section2_Product, Section2_Code FROM Table
) M
UNPITVOT (
Product FOR ID IN (Section1_Product, Section2_Product)
) p
UNPIVOT (
Code FOR CO IN (Section1_Code, Section2_Code)
) c
如果我只使用一列(产品,注释掉代码)执行,那么我将在 ID 列 (1,2) 中有 2 个值。如果我使用 2 列运行查询,那么我在 ID 列中得到 4 个值(1、2、3、4)。
【问题讨论】:
标签: sql sql-server sql-server-2012-express