我希望根据paymentstatus值从两个不同的列中获得付款状态总和 - 但此查询会为sum返回null。为什么不起作用?
select payment_status,
CASE
WHEN 'PAID' THEN sum(paid_amount)
when 'Not Paid' then sum(total_amount_due )
END
from monthly_fee
group by payment_status;
答案 0 :(得分:0)
select sum(CASE WHEN payment_status = 'PAID' THEN paid_amount else 0 end) as paid,
sum(CASE WHEN payment_status = 'Not Paid' THEN total_amount_due else 0 end) as due
from monthly_fee
答案 1 :(得分:0)
如果您需要此条件,则需要在case
:
select payment_status,
(case payment_status
when 'Paid' then sum(paid_amount)
when 'Not Paid' then sum(total_amount_due )
end)
from monthly_fee
group by payment_status;
这似乎是编写查询的一种奇怪方式,除非你真的想要两行。
答案 2 :(得分:0)
您的WHEN
条款不是条件。
我希望看到像
这样的东西select payment_status,
CASE
WHEN payment_status = 'PAID' THEN sum(paid_amount)
when payment_status = 'Not Paid' then sum(total_amount_due )
END
from monthly_fee
group by payment_status;
答案 3 :(得分:0)
您可以尝试以下查询:
select sum(if(payment_status = 'PAID', paid_amount, 0)
+ if(payment_status = 'Not Paid', total_amount_due, 0))
from monthly_fee
group by payment_status;