SQL SQL查询ssrs服务器

时间:2018-09-19 00:26:13

标签: sql reporting-services

我的表格的列如下所示:

jobnum jobname description oncost
1        abc    xxxx       cost1
1        abc    xxxx       cost2

如何在一行中得到结果,如下所示:

jobnum jobname description oncost
1        abc    xxxx       cost1,Cost2

2 个答案:

答案 0 :(得分:0)

它确实取决于特定的数据库,但是您需要对行进行分组,并汇总最后一列。以下查询在大多数当前数据库上有效:

select jobnum, jobname, description, listagg(oncost,',')
  from my_table
  group by jobnum, jobname, description

答案 1 :(得分:0)

在SQL Server 2017中,您可以使用string_agg()GROUP BYoncost以外的所有列。

SELECT t1.jobnum,
       t1.jobname,
       t1.description,
       string_agg(t1.oncost,
                  ',') oncost
       FROM elbat t1
       GROUP BY t1.jobnum,
                t1.jobname,
                t1.description;

对于使用子查询FOR XML代替string_agg()的较低版本,则是解决此类问题的典型方法。

SELECT t1.jobnum,
       t1.jobname,
       t1.description,
       stuff((SELECT ',' + t2.oncost
                     FROM elbat t2
                     WHERE t2.jobnum = t1.jobnum
                           AND t2.jobname = t1.jobname
                           AND t2.description = t1.description
                           FOR XML PATH('')),
             1,
             1,
             '') oncost
       FROM elbat t1
       GROUP BY t1.jobnum,
                t1.jobname,
                t1.description;