40010 123 111
40010 222 111
合并后:
TraceID BranchID SystemID
40010 123,222 111
分析函数+递渣友归液局实现:
SELECT TraceID
,LTRIM(SYS_CONNECT_BY_PATH(BranchID,','),'如埋槐,') AS BranchID
,SystemID
FROM (SELECT TMP.*,
ROW_NUMBER() OVER(PARTITION BY TraceID ORDER BY 1) AS RN
,COUNT(1) OVER(PARTITION BY TraceID) AS CNT
FROM 表名)
WHERE CNT = RN
CONNECT BY PRIOR TraceID = TraceID
AND PRIOR RN + 1 = RN
START WITH RN = 1;
如果是oracle可以通过简单的函数来实现,ms sql需要写个存储过程
这个直接用sql可能不行,建议用存储过程,功能强大
dfghjkyerdgttrtg
