34,588
社区成员
发帖
与我相关
我的任务
分享
--测试数据
;WITH test(prd_no,[rank])AS(
select '032030200154','A' union all
select '032030200154','B' union all
select '032020700026','D' union all
select '032020700026','D' union all
select '032030200154','C' union all
select '033010100232','E'
)
,c AS (
SELECT rn=ROW_NUMBER() OVER(ORDER BY GETDATE()) ,* FROM test -- 正常情况应该有个排序列,这里是我加上去
)
SELECT iif(a.prd_no=b.prd_no AND a.RANK=b.RANK,'与上一行相同','与上一行不同'),* FROM c a JOIN c b ON a.rn=b.rn+1
--测试数据
;WITH test(prd_no,[rank])AS(
select '032030200154','A' union all
select '032030200154','B' union all
select '032020700026','D' union all
select '032020700026','D' union all
select '032030200154','C' union all
select '033010100232','E'
)
--测试数据结束
,temp AS (
SELECT prd_no ,
STUFF(( SELECT ',' + test.[rank]
FROM test
WHERE prd_no = a.prd_no
GROUP BY rank
FOR
XML PATH('')
), 1, 1, '') AS jieguo
FROM test a
GROUP BY a.prd_no
)
SELECT test.* ,
temp.jieguo
FROM test
INNER JOIN temp ON temp.prd_no = test.prd_no