SSIS - 旋转多个记录中的重复值
SSIS - pivoting duplicate values in multiple records
我遇到这样的情况:
ID TYPE TIMESTAMP
1 A 22/06/2015 03:55:02
1 A 22/06/2015 03:55:05
1 B 22/06/2015 03:55:10
当然,如果我尝试旋转 SISS 会给出一个错误,提示该 ID 的 TYPE 中存在重复值;所以我认为得到这样的结果会很好:
ID occurrence A B
1 1 22/06/2015 03:55:02 22/06/2015 03:55:10
1 2 22/06/2015 03:55:05
如果第一次出现的事件用事件(A 和 B)的较早时间戳填充,那也很好,但我认为只要正确排序就可以做到这一点。
这可以做到吗?
您应该能够使用 ROW_NUMBER 创建 "Occurrence" 列并根据类型
旋转数据
SELECT *
FROM (
SELECT *,
ROW_NUMBER() OVER(PARTITION BY [ID], [Type] ORDER BY [TimeStamp]) Occurrence
FROM Test
) t
PIVOT
( MAX([TimeStamp])
FOR [Type] IN ([A],[B])
) p
我遇到这样的情况:
ID TYPE TIMESTAMP
1 A 22/06/2015 03:55:02
1 A 22/06/2015 03:55:05
1 B 22/06/2015 03:55:10
当然,如果我尝试旋转 SISS 会给出一个错误,提示该 ID 的 TYPE 中存在重复值;所以我认为得到这样的结果会很好:
ID occurrence A B
1 1 22/06/2015 03:55:02 22/06/2015 03:55:10
1 2 22/06/2015 03:55:05
如果第一次出现的事件用事件(A 和 B)的较早时间戳填充,那也很好,但我认为只要正确排序就可以做到这一点。
这可以做到吗?
您应该能够使用 ROW_NUMBER 创建 "Occurrence" 列并根据类型
旋转数据SELECT *
FROM (
SELECT *,
ROW_NUMBER() OVER(PARTITION BY [ID], [Type] ORDER BY [TimeStamp]) Occurrence
FROM Test
) t
PIVOT
( MAX([TimeStamp])
FOR [Type] IN ([A],[B])
) p