2

次のテーブルt_vouchersがあります。

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
4

1 に答える 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フィドルです

于 2013-02-01T08:26:50.463 に答える