【发布时间】:2014-06-24 07:03:29
【问题描述】:
数据
DECLARE @temp TABLE([Group] int,GroupOrder int,Response int)
INSERT INTO @temp VALUES (1,1,1)
INSERT INTO @temp VALUES (1,2,1)
INSERT INTO @temp VALUES (2,1,1)
INSERT INTO @temp VALUES (2,2,1)
INSERT INTO @temp VALUES (2,3,2)
INSERT INTO @temp VALUES (2,4,1)
Group GroupOrder Response
1 1 1
1 2 1
2 1 1
2 2 1
2 3 2
2 4 1
关于上述数据,Group 按逻辑定义 Group,这意味着我有 2 个 groupId 的数据,即 1 和 2 响应是我需要以这样的方式旋转的响应的第一个值转到第一列第二个值进入每组的第二列,按照组顺序定义,预期结果是:
Group Response Newcol
1 1 1
2 1 1
2 2 1
Response 的第一个值应该进入 Response Column,下一个值应该进入 Newcol 移动到该组的下一条记录(如果存在),应该继续遵循相同的逻辑。
我尝试过 ROW_NUMBER() 和 Pivot,但没有成功。
【问题讨论】:
-
总是成对的吗?第 3 组可以有 1 行吗?
-
一对永远存在
标签: sql-server-2008 tsql pivot