2

OK、次のようなテーブルがあります。

ID   AMOUNT      PAID
1    50.00       Y
2    100.00      N
3    200.00      Y

そして、私は次のようなものを見たいです:

Total     Due Paid
350.00    1   2

したがって、私のSQLは次のようになります(私の頭の中では...それはそのようには機能しません。それが私がここにいる理由です)

select sum(amount)
,count(paid where paid='y') as due
,count(paid where paid='n') as paid 
from sometable where something=somethingelse
4

2 に答える 2

5
select sum(amount) as total, 
       sum(case paid when 'N' then 1 else 0 end) as due, 
       sum(case paid when 'Y' then 1 else 0 end) as paid
from sometable where something=somethingelse
于 2012-12-04T14:50:24.847 に答える
1

もう1つのオプション

SELECT SUM(AMOUNT) AS Total,
       COUNT(CASE WHEN PAID = 'Y' THEN PAID END) AS Paid,
       COUNT(CASE WHEN PAID = 'N' THEN PAID END) AS Due
FROM sometable
WHERE something = somethingelse

SQLFiddle のデモ

于 2012-12-04T20:44:47.630 に答える