检查我的laravel查询它不起作用...但mysql查询工作正常。
$data1 = DB::table(DB::raw('(select sum(case when type="debit" then amount else -amount end) from report) - (select sum(amount) from total) as balance' ))
对于mysql查询,请参阅sqlfiddle:http://sqlfiddle.com/#!9/2d0343/9
非常感谢...
答案 0 :(得分:2)
假设类型不能为空且具有信用/借记值,则可以使用CASE
聚合:
select
sum(case when type='credit' then amount else -amount end)
from report;
如果列可以为空或在type
列中允许其他值,则可以修改上述内容,如:
select
sum(case when type='credit' then amount
else -amount end)
from report
where type in ('credit', 'debit');
对于最新的编辑,计算一个表的差异并从其他表中减去聚合:
select (
select sum(case when type='credit' then amount else -amount end)
from report
) - (select sum(amount) from total);
答案 1 :(得分:0)
select sum(case type when 'credit' then amount when 'debit' then -amount else 0 end)
from report
答案 2 :(得分:0)
选择(总和(类型='信用'然后金额为其他-amount结束时的情况)) - (从总数中选择总和(金额)) 来自报告