我有下表:
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')
我需要使用 CTE 的输出如下:
ver family MM
------- --------- ----------
DT fam1 111,222
mb fam1 333
mb fam2 444
请帮忙!!
最佳答案
您不需要 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
如果你需要它成为 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
关于sql - 实现 CTE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6712812/