栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

SQL Server串联GROUP BY

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SQL Server串联GROUP BY

如果您使用的是SQL Server 2005+。然后您可以这样做:

SELECt     JobsTagMap.JobID,    STUFF    (        ( SELECT      ',' +Title FROM     Tags WHERe     Tags.TagID=JobsTagMap.TagID FOR XML PATH('')        )    ,1,1,'') AS TitleFROM JobsTagMap

编辑

因为您没有向我们显示不同表中的表结构和数据。很难知道。因此,我假设您的表结构如下所示:

CREATE TABLE JobsTagMap(    JobID INT,    TagID INT)CREATE TABLE Tags(    TagID INT,    Title VARCHAr(100))

有了这个数据:

INSERT INTO JobsTagMapVALUES(1,1),(1,2),(2,2),(2,4),(2,5)INSERT INTO TagsVALUES(1,'Tag1'),(2,'Tag2'),(3,'Tag2'),(4,'Tag5'),(5,'Tag9')

如果获取该数据,则显示的数据

JobID
不能唯一。您可能在某个
Job
表的唯一位置有一个表。如果您只想使用显示的这些表,则需要执行以下操作:

;WITH CTEAS(    SELECt        ROW_NUMBER() OVER(PARTITION BY JobID ORDER BY JobID) AS RowNbr,        JobsTagMap.*    FROM        JobsTagMap)SELECt    *,    STUFF    (        ( SELECT      ',' +Title FROM     Tags     JOIN JobsTagMap         ON Tags.TagID=JobsTagMap.TagID WHERe     JobsTagMap.JobID=CTE.JobID FOR XML PATH('')        )    ,1,1,'') AS TitleFROM    CTEWHERe    CTE.RowNbr=1

这将为您提供以下结果:

1   1   1   Tag1,Tag21   2   2   Tag2,Tag5,Tag9

因此,将来总是显示什么 表结构 及其 数据 。那会给你更好的答案



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/441620.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号