在SQL Server视图中按另一列筛选时连接字符串

时间:2014-11-25 21:40:08

标签: sql sql-server sql-server-2014

我的表格SC具有以下格式:

Team        Owner
------------------
 A            1
 A            2
 B            3
 B            4

我希望视图中的输出为:

Team        Owners
-------------------
 A            1,2
 B            3,4

我尝试在视图的设计中使用FOR XML PATH:

STUFF((SELECT ', ' + temp.Owner 
       FROM (SELECT SC.Owner) temp 
       WHERE (SC.Owner = temp.Owner) 
       FOR XML PATH(''), TYPE).value('.', 'VARCHAR(MAX)'), 1, 2, '') AS Owners

但它给了我一个错误,因为这是一个视图的设计,而不是标准的交易:

  

'附近的WHERE子句出错('   无法解析查询文本。

关于如何实现我想要的任何建议?

2 个答案:

答案 0 :(得分:3)

代码看起来像这样:

select team,
       stuff((select ',' + sc2.owner
              from sc sc2
              where sc2.team = sc.team
              for xml path ('')
             ), 1, 1, '') as owners
from sc
group by team;

答案 1 :(得分:0)

怎么样:

SELECT team, GROUP_CONCAT(owner ORDER BY owner ASC SEPARATOR ',') as owners FROM sc GROUP BY team