如何使用多个 whereBetween 求和两个不同的记录
How to use multiple whereBetween to sum two different record
我需要对两个不同日期的数据进行比较和求和。
假设我有 4 个输入日期
startdate = "2020-11-01",
enddate = "2020-11-30",
compare_startdate = "2020-12-01",
compare_enddate = "2020-12-31",
目前,我的查询只能得到一个 whereBetween 日期数据如下
当前代码
$raw_data = ChartOfAccount::with(array(
'journal' => function($query) use ($init)
{
$query->selectRaw('*,
sum(item_journals.debit) as total_debit,
sum(item_journals.credit) as total_credit,
sum(item_journals.debit) - sum(item_journals.credit) as net_movement');
$query->groupBy('chart_of_account_id');
$query->where('item_journals.deleted_at', null);
$query->whereBetween('date', array($init['startdate'], $init['enddate']));
}
))
->get();
startdate
和 enddate
的当前结果
"total_debit" => "0.00"
"total_credit" => "200.00"
"net_movement" => "-200.00"
示例来自 compare_startdate
和 compare_enddate
的另一个结果
"total_debit" => "0.00"
"total_credit" => "50.00"
"net_movement" => "-50.00"
如何查询从 compare_startdate
到 compare_enddate
的另一个结果,以便对 startdate
和 enddate
的结果求和?
预期结果
"total_debit" => "0.00"
"total_credit" => "150.00"
"net_movement" => "-150.00"
我确实在查询中尝试过类似的操作,但结果不正确
$query->whereBetween('date', array($init['startdate'], $init['enddate']));
$query->whereBetween('date', array($init['compare_startdate'], $init['compare_enddate']));
你好朋友你可以使用 orWhereBetween 提前 where 子句如下,
DB::table('tbl')
->Where(function ($query) use ($startdate,$enddate,$compare_startdate,$compare_enddate) {
$query->whereBetween('date', [$startdate, $enddate]);
$query->orWhereBetween('date', [$compare_startdate, $compare_enddate] );
})->get();
我需要对两个不同日期的数据进行比较和求和。
假设我有 4 个输入日期
startdate = "2020-11-01",
enddate = "2020-11-30",
compare_startdate = "2020-12-01",
compare_enddate = "2020-12-31",
目前,我的查询只能得到一个 whereBetween 日期数据如下
当前代码
$raw_data = ChartOfAccount::with(array(
'journal' => function($query) use ($init)
{
$query->selectRaw('*,
sum(item_journals.debit) as total_debit,
sum(item_journals.credit) as total_credit,
sum(item_journals.debit) - sum(item_journals.credit) as net_movement');
$query->groupBy('chart_of_account_id');
$query->where('item_journals.deleted_at', null);
$query->whereBetween('date', array($init['startdate'], $init['enddate']));
}
))
->get();
startdate
和 enddate
"total_debit" => "0.00"
"total_credit" => "200.00"
"net_movement" => "-200.00"
示例来自 compare_startdate
和 compare_enddate
"total_debit" => "0.00"
"total_credit" => "50.00"
"net_movement" => "-50.00"
如何查询从 compare_startdate
到 compare_enddate
的另一个结果,以便对 startdate
和 enddate
的结果求和?
预期结果
"total_debit" => "0.00"
"total_credit" => "150.00"
"net_movement" => "-150.00"
我确实在查询中尝试过类似的操作,但结果不正确
$query->whereBetween('date', array($init['startdate'], $init['enddate']));
$query->whereBetween('date', array($init['compare_startdate'], $init['compare_enddate']));
你好朋友你可以使用 orWhereBetween 提前 where 子句如下,
DB::table('tbl')
->Where(function ($query) use ($startdate,$enddate,$compare_startdate,$compare_enddate) {
$query->whereBetween('date', [$startdate, $enddate]);
$query->orWhereBetween('date', [$compare_startdate, $compare_enddate] );
})->get();