ちょっと変わった (?) 小計の求め方
小計行を出したい場合は ROLLUP やら CUBE やらを使うのが普通なんだろうけど、それらが使えない環境というものもあるわけで・・・*1 *2
で、効率無視してでも出したい場合、以下のように書けばいい。
-- 明細行と SELECT Customer.id , Customer.name , Item.id , Item.name , Item.price , Account.quantity , Account.quantity * Item.price , Account.remark FROM Customers Customer INNER JOIN Accounts Account ON Customer.id = Account.c_id INNER JOIN Items Item ON Account.i_id = Item.id UNION ALL -- 小計行をUNION ALLでくっつけて SELECT Customer.id , Customer.name + N' 小計' , NULL , '' , NULL , SUM(Account.quantity) , SUM(Account.quantity * Item.price) , '' FROM Customers Customer INNER JOIN Accounts Account ON Customer.id = Account.c_id INNER JOIN Items Item ON Account.i_id = Item.id GROUP BY Customer.id , Customer.name -- 全体をORDER BY ORDER BY Customer.id , Customer.name ;
SQL でしかカスタマイズできないと、なにかとつらい。