2013-02-01 49 views
2

我有以下表t_vouchers的IDS:SQL服務器 - 獲取總結行

id code amount isactive 
1 a1 10  1 
2 a2 20  0 
3 a3 30  1 

我要計算所有有效憑證的總和(金額),而且還得到一個包含ID列表中的另一列包含在這筆錢。如下圖所示:

sum ids 
40 1,3 

查詢會是這樣的:

select sum(amount) /* ? how to get here the ids stuffed in a comma separated string ? */ 
from t_vouchers 
where isactive = 1 

回答

1

這應該工作:

select sum(amount) sum, 
     (
     STUFF((
      SELECT DISTINCT ',' + CAST(a.id AS VARCHAR(100)) 
      FROM t_vouchers a 
      WHERE a.isactive = 1 
      FOR XML PATH('') 
      ),1,1,'') 
     ) ids 
from t_vouchers 
where isactive = 1 

這裏是一個SQL Fiddle

+0

謝謝伊萬摹!它像一個魅力。 – mmmmmm

+0

@mmmmmm太棒了,我很高興幫助:) –