我有下表
SourceTbl
FileNum EventCode ChargeDescrip
510-1 DP steal
510-1 DP possession
510-2 DP robbery
510-2 DP firearm
510-2 DP delivery
510-3 DP robbery
我想基于chargedescrip
列传播此数据
DestTbl
FileNum EventCode Charge1, Charge2 Charge3
510-1 DP steal possession
510-2 DP robbery firearm delivery
510-3 DP robbery
如何使用SQL查询来做到这一点?我发现我也许可以使用PIVOT
子句。但是我会继续使用它。
答案 0 :(得分:0)
您必须使用ROW_NUMBER并使用它来生成Charge1,Charge2,Charge3 ....列。
WITH Cases
AS (
SELECT [FileNum]
,[EventCode]
,[ChargeDescrip]
,ROW_NUMBER() OVER (
PARTITION BY [FileNum] ORDER BY [FileNum] ASC
) 'RN'
FROM SourceTbl
)
SELECT [FileNum]
,[EventCode]
,[1] Charge1
,[2] Charge2
,[3] Charge3
FROM Cases
pivot(max([ChargeDescrip]) FOR [RN] IN (
[1]
,[2]
,[3]
)) p