22,209
社区成员
发帖
与我相关
我的任务
分享
select a.orgId,a.rowNo
,case when b.rowNo > 1 then a.name ||',' || b.name
else a.name end name
from temp_zengcc a
,temp_zengcc b
where a.orgId = b.orgId
and a.name <> b.name
and a.rowNo <> b.rowNo
这是我写的sql,但是只支持orgId相同的记录数不超过2条的情况,超过2条就不行了,能不能帮我改进一下这个方法,能够满足orgId相同的记录数大于3的情况。
--select 'a' NAME, 1 ROWNO, 1 ORGID
--into #t
--union all select 'b', 2 ,1
--union all select 'c', 3 ,1
--union all select 'asdf', 1 ,2
--union all select '12334', 1 ,3
select stuff(
(select ','+name
from #t b
where a.ORGID=b.ORGID for xml path(''))
,1
,1
,'') as NAME
,min(ROWNO) as ROWNO
,ORGID
from #t a
group by ORGID
这是sql server的写法,db不知道有没有类似的