【问题标题】:Multiple rows into a single row and combine column SQL多行成单行并合并列SQL
【发布时间】:2018-07-23 18:53:49
【问题描述】:

我试图让这个视图查询两个表,然后将每个程序 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

【问题讨论】:

  • 请把图片上传到帖子里。无意冒犯,但我没有点击不受信任的链接
  • @TomasPastircak,OP 没有足够的代表来上传图片。

标签: sql sql-server sql-server-2008 tsql


【解决方案1】:
select ProgramId,
stuff(
(
    select ','+ [attributename]
    from Table1 
    where programid = t.programid for XML path('')

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

查看我的sql fiddle

结果

PROGRAMID   ATTRIBUTENAMES
887         Study Design,Control Groups,Primary Outcomes

【讨论】:

  • 非常感谢;我把你所做的事情添加到我正在做的事情上,它奏效了。谢谢:)
  • 我是新来的,如果您这样做,我点击了绿色复选标记上方的向上箭头。
  • 如果我在做stuff之前加入两个表会怎么样
  • @Si8 你的意思是在这个之前的声明中?我不明白你的问题。也许在你详细说明你想要什么的地方作为它自己的问题会更好?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 2020-06-09
  • 1970-01-01
  • 1970-01-01
  • 2013-12-31
  • 1970-01-01
相关资源
最近更新 更多