生のSQLで探しているのはこれだと思います:
SELECT
`date`,
SUM(IF(branch_id = 1, amount, 0)) as 'Branch 1',
SUM(IF(branch_id = 2, amount, 0)) as 'Branch 2',
SUM(amount) as 'Total'
FROM
branches
WHERE
branch_id IN (1,2)
GROUP BY
`date`;
残念ながら、これのほとんどは querybuilder では実行できないため、次のDB::raw()
ように で実行する必要があります。
Sale::whereIn(branch_id', [1,2])->
select('date',
DB::raw("
SUM(IF(branch_id = 1, amount, 0)) as 'Branch 1',
SUM(IF(branch_id = 2, amount, 0)) as 'Branch 2',
SUM(amount) as amount
")
)->groupBy('date')->get();
私はこれを Laravel でテストしていないので、少しずれているかもしれませんが、近いはずです。
サンプルフィドル。