在 mysql 中使用 if 子句和标签时出现 GROUP BY 问题
GROUP BY issue when using if clause and label in mysql
我有以下查询:
SELECT if(branch='snj' or branch='nnj', 'nj', branch) as 'Branch',
WEEK(srv_date,1) as 'Week No.',
srv_date as 'Srv Date',
(SUM(revenue_var)+sum(revenue)) as 'Proj Rev',
sum(revenue) as 'Actual Rev',
sum(revenue_var) as 'Var Rev',
(SUM(stops)+sum(stops_var)) as 'Proj Stops',
sum(stops) as 'Actual Stops',
sum(stops_var) as 'Var Stops'
FROM `route_history`
GROUP BY srv_date, Branch
ORDER BY srv_date, Branch
除了 Branch 为 'nj' 时,结果符合预期。当它是 'nj' 时,两条记录将显示在两行中,并显示各自的结果,而不是相加并显示在一行中。
感谢任何帮助!
感谢 Sami Kuhmonen,解决方案如下:
SELECT if(branch='snj' or branch='nnj', 'nj', branch) as 'Branch',
WEEK(srv_date,1) as 'Week No.',
srv_date as 'Srv Date',
(SUM(revenue_var)+sum(revenue)) as 'Proj Rev',
sum(revenue) as 'Actual Rev',
sum(revenue_var) as 'Var Rev',
(SUM(stops)+sum(stops_var)) as 'Proj Stops',
sum(stops) as 'Actual Stops',
sum(stops_var) as 'Var Stops'
FROM `route_history`
GROUP BY srv_date, if(branch='snj' or branch='nnj', 'nj', branch)
ORDER BY srv_date, Branch
我有以下查询:
SELECT if(branch='snj' or branch='nnj', 'nj', branch) as 'Branch',
WEEK(srv_date,1) as 'Week No.',
srv_date as 'Srv Date',
(SUM(revenue_var)+sum(revenue)) as 'Proj Rev',
sum(revenue) as 'Actual Rev',
sum(revenue_var) as 'Var Rev',
(SUM(stops)+sum(stops_var)) as 'Proj Stops',
sum(stops) as 'Actual Stops',
sum(stops_var) as 'Var Stops'
FROM `route_history`
GROUP BY srv_date, Branch
ORDER BY srv_date, Branch
除了 Branch 为 'nj' 时,结果符合预期。当它是 'nj' 时,两条记录将显示在两行中,并显示各自的结果,而不是相加并显示在一行中。
感谢任何帮助!
感谢 Sami Kuhmonen,解决方案如下:
SELECT if(branch='snj' or branch='nnj', 'nj', branch) as 'Branch',
WEEK(srv_date,1) as 'Week No.',
srv_date as 'Srv Date',
(SUM(revenue_var)+sum(revenue)) as 'Proj Rev',
sum(revenue) as 'Actual Rev',
sum(revenue_var) as 'Var Rev',
(SUM(stops)+sum(stops_var)) as 'Proj Stops',
sum(stops) as 'Actual Stops',
sum(stops_var) as 'Var Stops'
FROM `route_history`
GROUP BY srv_date, if(branch='snj' or branch='nnj', 'nj', branch)
ORDER BY srv_date, Branch