Laravel查询案例和不同的表减法

时间:2017-10-23 07:38:23

标签: php laravel

检查我的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

非常感谢...

3 个答案:

答案 0 :(得分:2)

假设类型不能为空且具有信用/借记值,则可以使用CASE聚合:

select 
    sum(case when type='credit' then amount else -amount end)
from report;

Demo

如果列可以为空或在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结束时的情况)) - (从总数中选择总和(金额))   来自报告