学习
实践
活动
专区
工具
TVP
写文章

如何在sql server中使用group_concat进行查询

浏览 236关注 0回答 2得票数 125
原文

我知道在sql server中我们不能使用Group_concat函数,但是这里有一个问题,我需要Group_Concat我的查询。我google它找到一些逻辑,但不能纠正it.My sql查询是

select  m.maskid,m.maskname,m.schoolid,s.schoolname,
md.maskdetail
from tblmask m join school s on s.id = m.schoolid 
join maskdetails md on m.maskid = md.maskid
order by m.maskname ;

它给我的结果是

只要看一下maskid中前3行,maskname、学校In、学校名是相同的,但是maskdetail是不同的,所以想要在最后一列包含所有maskdetails的那一行,依此类推。

我希望我的输出像这样

所以on.So在查询的时候请帮帮我。

提前谢谢。

原文
a_horse_with_no_name修改于2019-02-13 20:52

2 个回答

高票数最新
Amit Singh
回答于2013-07-11 19:03
得票数 31
Select
      A.maskid
    , A.maskname
    , A.schoolid
    , B.schoolname
    , STUFF((
          SELECT ',' + T.maskdetail
          FROM dbo.maskdetails T
          WHERE A.maskid = T.maskid
          FOR XML PATH('')), 1, 1, '') as maskdetail 
FROM dbo.tblmask A
JOIN dbo.school B ON B.ID = A.schoolid
Group by  A.maskid
    , A.maskname
    , A.schoolid
    , B.schoolname
roopaliv
回答于2014-07-17 18:53
得票数 7

请运行以下查询,在您的情况下它不需要STUFF和GROUP BY:

Select
      A.maskid
    , A.maskname
    , A.schoolid
    , B.schoolname
    , CAST((
          SELECT  T.maskdetail+','
          FROM dbo.maskdetails T
          WHERE A.maskid = T.maskid
          FOR XML PATH(''))as varchar(max)) as maskdetail 
FROM dbo.tblmask A
JOIN dbo.school B ON B.ID = A.schoolid
页面原文内容由Rahul、a_horse_with_no_name、Amit Singh、Devart、roopaliv、Alessandro Bernardi提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:https://stackoverflow.com/questions/17591490复制

所属标签

sql-serverstring-aggregationsql-server-group-concat

关注

腾讯云开发者公众号
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
腾讯云开发者公众号二维码

扫码关注腾讯云开发者

领取腾讯云代金券