[英]SQL SQL query ssrs server
我有帶有列的表,如下所示:
jobnum jobname description oncost
1 abc xxxx cost1
1 abc xxxx cost2
如何在一行中得到結果,如下所示:
jobnum jobname description oncost
1 abc xxxx cost1,Cost2
它確實取決於特定的數據庫,但是您需要對行進行分組,並匯總最后一列。 以下查詢應在大多數當前數據庫上運行:
select jobnum, jobname, description, listagg(oncost,',')
from my_table
group by jobnum, jobname, description
在SQL Server 2017中,您可以使用string_agg()
和GROUP BY
除oncost
之外的所有列。
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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.