sat*_*jit 3 sql sql-server sql-server-2008
我有下表:
create table #prd
(
ver varchar(20),
fam varchar(20),
mm varchar(20),
)
insert into #prd values('dt','fam1','111')
insert into #prd values('dt','fam1','222')
insert into #prd values('mb','fam1','333')
insert into #prd values('mb','fam2','444')
Run Code Online (Sandbox Code Playgroud)
我需要使用CTE输出如下:
ver family MM
------- --------- ----------
DT fam1 111,222
mb fam1 333
mb fam2 444
Run Code Online (Sandbox Code Playgroud)
请帮忙!!
您不需要CTE.这是一个不使用CTE的解决方案
SELECT ver, fam,
STUFF((
SELECT ', ' + mm
FROM #prd AS prd
WHERE p.ver = prd.ver
AND p.fam = prd.fam
ORDER BY mm
FOR XML PATH('')
), 1, 2, '') AS MM
FROM #prd AS p
GROUP BY ver, fam
Run Code Online (Sandbox Code Playgroud)
如果你需要它作为CTE,试试这个
;WITH prd_CTE AS
(
SELECT ver, fam,
STUFF((
SELECT ', ' + mm
FROM #prd AS prd
WHERE p.ver = prd.ver
AND p.fam = prd.fam
ORDER BY mm
FOR XML PATH('')
), 1, 2, '') AS MM
FROM #prd AS p
GROUP BY ver, fam
)
SELECT *
FROM prd_CTE
Run Code Online (Sandbox Code Playgroud)