在sql中连接多个同名行?
我似乎无法得到我需要的输出,有人能看出我做错了什么吗 输出应为 1 | Adam | Math, Science 2 | Tony | Math 3 | Erica | English, History 1 | Adam | Math, Science, English, History 2 | Tony | Math, Science, English, History 3 | Erica | Math, Science, English, History在sql中连接多个同名行?,sql,sql-server,Sql,Sql Server,我似乎无法得到我需要的输出,有人能看出我做错了什么吗 输出应为 1 | Adam | Math, Science 2 | Tony | Math 3 | Erica | English, History 1 | Adam | Math, Science, English, History 2 | Tony | Math, Science, English, History 3 | Erica | Math, Science, English, History 如果留下负面结果,请留下原因,问题出
如果留下负面结果,请留下原因,问题出现在
中,其中T.WM=T.WM
语句中
SELECT *, STUFF((
SELECT DISTINCT ', ' + Class
FROM T as T2
WHERE T.WM = T2.WM
FOR XML PATH('')), 1, 2, '')
FROM (
SELECT DISTINCT WM
FROM T
) T
我会使用
CTE
:
with cte as (
select *, max(id) over (PARTITION by wm) NewId
from t
)
SELECT NewId, WM, STUFF((
SELECT DISTINCT ', ' + Class
FROM cte
WHERE C.WM = WM
FOR XML PATH('')), 1, 2, '')
FROM cte c
group by NewId, WM
检查一下,我认为我的WHERE子句根本不起作用。您应该给内表一个不同的别名。@Sam如果我的答案解决了您的问题,请将其标记为“答案”