I am trying to split one of the data on GLACCTNBR
column into multiple columns but some record did not get split correctly and end up with a Null
value.
WITH C AS(
SELECT distinct
m.ACCTID
,m.ITEMDESC
,m.GLACCTNBR
,m.TOTAL
,m.DEPFILENBR
,m.DEPFILESEQ
,m.ITEMACCTID
,m.AMOUNT
,value
,ROW_NUMBER() OVER(PARTITION BY m.GLACCTNBR ORDER BY (SELECT 1)) as rn
FROM TG_ITEM_DATA m
inner join TG_TRAN_DATA t on m.DEPFILENBR = t.DEPFILENBR
AND m.DEPFILESEQ = t.DEPFILESEQ
AND m.EVENTNBR = t.EVENTNBR
AND m.TRANNBR = t.TRANNBR
AND t.VOIDDT IS NULL
AND NOT(t.ITEMIND='T')
AND m.GLACCTNBR IS NOT NULL
CROSS APPLY STRING_SPLIT(m.GLACCTNBR, '|') AS BK
WHERE (
(m.DEPFILENBR=2019261 AND m.DEPFILESEQ=1))
AND m.ACCTID IS NOT NULL
)
SELECT distinct depfilenbr, depfileseq,acctid,GLACCTNBR,ITEMACCTID,AMOUNT,
[1] AS PLUDEP
,[2] AS FUND
,[3] AS REVCD
,[4] AS SUBREVCD
,[5] AS BALSJT
FROM C
PIVOT(
max(VALUE)
FOR RN IN([1],[2],[3],[4],[5])
) as PVT
GROUP BY DEPFILENBR,depfileseq,acctid,GLACCTNBR,ITEMACCTID,AMOUNT,[1],[2],[3],[4],[5]
depfilenbr depfileseq acctid GLACCTNBR ITEMACCTID AMOUNT PLUDEP FUND REVCD SUBREVCD BALSJT
2019261 1 5053 08|48R|3800|00|0000 50-0028 38.41 08 48R 3800 00 0000
2019261 1 5053 08|48R|3896|00|0000 50-001 0 NULL NULL NULL NULL NULL