加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

将多行合并为一行并组合列SQL

发布时间:2020-12-12 06:31:31 所属栏目:MsSql教程 来源:网络整理
导读:我试图让这个视图查询两个表,然后将每个程序ID汇总到一行,其中所有AttributeNames都在AttributeNames列中 我加入了这两个表,它提取了适当数量的记录. 现在,我需要的部分就是将每个ProgramID和一个所有AttributeNames一起放在每个id的AttributeNames列中. 示例
我试图让这个视图查询两个表,然后将每个程序ID汇总到一行,其中所有AttributeNames都在AttributeNames列中

我加入了这两个表,它提取了适当数量的记录.
现在,我需要的部分就是将每个ProgramID和一个所有AttributeNames一起放在每个id的AttributeNames列中.

示例:全部在一行中.

ProgramID      | AttributeNames
887            | Studydesign,Control Groups,Primary Outcomes.

这是我需要修改的SQL VIEW的图像,所以它执行此操作:

查询:

SELECT TOP (100) PERCENT dbo.tblProgramAttributes.ProgramID,dbo.tblProgramAttributes.AttributeID AS PAattributeID,dbo.tblAttributes.AttributeID,dbo.tblAttributes.AttributeName
FROM   dbo.tblProgramAttributes INNER JOIN
       dbo.tblAttributes 
ON     dbo.tblProgramAttributes.AttributeID = dbo.tblAttributes.AttributeID
WHERE (dbo.tblProgramAttributes.AttributeID NOT LIKE '%ProgramType%')
ORDER BY dbo.tblProgramAttributes.ProgramID DESC

解决方法

select ProgramId,stuff(
(
    select ','+ [attributename]
    from Table1 
    where programid = t.programid for XML path('')

),1,'') as AttributeNames
from (select distinct programid 
      from Table1 )t

看看我的sql fiddle

结果

PROGRAMID   ATTRIBUTENAMES
887         Study Design,Primary Outcomes

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读