如何在SUM与CASE WHEN中实现IF条件的数值汇总逻辑?
修正后的Laravel查询代码
原代码的CASE语句语法有误,无法实现按a.type汇总employee_qty字段的需求,以下是修正后的代码:
select( 'a.client_location_id as location_id', 'b.name as location_name', 'c.name as client_name', DB::raw('SUM(CASE WHEN a.type = 1 THEN a.employee_qty ELSE 0 END) as e_qty_in'), DB::raw('SUM(CASE WHEN a.type = 2 THEN a.employee_qty ELSE 0 END) as e_qty_out') )
修正说明:
- 原代码错误地将
employee_qty放在了条件判断语句中,正确的CASE逻辑应该是:当a.type等于目标值时,取a.employee_qty的数值参与求和,否则取0,最后通过SUM函数完成汇总。 - 修正后,
e_qty_in会汇总所有a.type = 1的employee_qty值,e_qty_out会汇总所有a.type = 2的employee_qty值,完全匹配需求逻辑。
内容的提问来源于stack exchange,提问作者stackover flow
相关产品推荐
相关产品推荐

