用t-sql连接列

时间:2016-10-07 13:40:53

标签: sql-server tsql

我有下表

enter image description here

我需要按Code,DateCod,Room和NumberOfBeds编写查询分组。

对于Name列,我需要连接名称,Booking列的相同操作和Num列我需要求和

结果应为以下

enter image description here

我正在尝试public void Execute(IJobExecutionContext context) { _grabService.CrawlNextAsync("").Wait(); } 方法,但我找不到解决方案。有人可以建议我这样做吗?

致以最诚挚的问候和感谢 FAB

1 个答案:

答案 0 :(得分:1)

您可以STUFF使用FOR XML PATH('')来实现此目标。

<强>查询

select 
  t.[Code], 
  t.[DateCod],
  t.[Room],
  t.[NrBeds],
  stuff((select ',' + t.[Name]
    from [your_table_name] t1
    where t1.[Code] = t.[Code]
    for xml path, type).value('.[1]', 'nvarchar(max)'), 1, 1, '') as [Name],
  stuff((select ',' + t.[Booking]
    from [your_table_name] t1
    where t1.[Code] = t.[Code]
    for xml path, type).value('.[1]', 'nvarchar(max)'), 1, 1, '') as [Booking],
  sum(t.Num) as [Num]
from [your_table_name] t
group by t.[Code], t.[DateCod], t.[Room], t.[NrBeds];