基本上,我需要显示报告,在其中我需要根据cityId和postCode提供一些详细信息。
因此,如果cityId为NULL而postCode为NULL,则这些记录的计数应在data1下。
类似地, -当cityId IN(123,456)时,这些记录的计数应在'data2'中 -当cityId输入(789,999)时'data3' -当cityId IN(111,222)然后是'data4' -ELSE'data5'
我在这里有2个查询:
COUNT(当cityId不为空且cityId不为IN(123、456、789、999、111、222)然后1 ELSE NULL END时)为\“ data5 \” 来自客户 ”
必须是以上所有条件的其他部分。
我已经尝试过了,但是无法达到预期的效果
httpAuthorization
所需结果: 数据1:7 数据2:5 数据3:12 资料4:10 数据5:1
答案 0 :(得分:0)
就目前而言,我为上述问题找到了替代解决方案,以某种方式解决了我的第一点问题。
仍在寻找第二个问题。
DB::table('customers')
->select(
DB::raw('COUNT(CASE WHEN cityId IS NULL AND postCode IS NULL then 1 ELSE NULL END) as "data1",
COUNT(CASE WHEN cityId IN (123, 456) then 1 ELSE NULL END) as "data2",
COUNT(CASE WHEN cityId IN (789,999) then 1 ELSE NULL END) as "data3",
COUNT(CASE WHEN cityId IN (4965,4959) then 1 ELSE NULL END) as "data4",
COUNT(CASE WHEN cityId IS NOT NULL AND cityId NOT IN (123, 456, 789, 999, 111, 222) then 1 ELSE NULl END ) as "data5"')
)->get();