在mysql中使用if子句和标签时的GROUP BY问题。

问题描述 投票:0回答:1

我有以下查询。

    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'时,这两条记录就会显示在两行中,并有各自的结果,而不是加起来显示在一行中。

感谢任何帮助

mysql label
1个回答
0
投票

感谢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
© www.soinside.com 2019 - 2024. All rights reserved.