首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误按日期分组MysQL

问错误按日期分组MysQL
EN

Stack Overflow用户
提问于 2018-02-06 23:34:07
回答 2查看 64关注 0票数 1

我正在尝试按日期分组2个不同的表。然而,有些地方出了问题,因为我不能按日期分组。

我有两个表,第一个“预算”和第二个“销售业绩按地区”的想法是显示所有月份的预算(12个月),每个月我们都有数据,我们将看到每个特定月份的销售。

代码语言:javascript
复制
SELECT  
      BB.RG,
      BB.YEAR, 
      DATE_FORMAT( BB.MONTH, '%M' ) AS `MONTH`,
      SPR.Bookings,
      SPR.`Bookings PY`,
      SPR.Billing,
      SPR.`Billing PY`,
      SPR.`GP Amt`, 
      SPR.`GP Amt PY`, 
      SUM( BB.BUDGET ) AS BUDGET 
   FROM
      BRANCH_BUDGET BB
         LEFT JOIN  Sales_Performance_Region SPR
            ON BB.MONTH = SPR.MONTH
   WHERE
          BB.RG =  'FE'
      AND SPR.RG =  'FE'
      AND BB.YEAR =  '2018'
   GROUP BY
      BB.MONTH 

你可以在上面看到代码。而不是显示由于我只有2个月的数据而导致的12个月是显示1月和2月。

我希望这个问题是有意义的。你能给我指路吗?

EN

回答 2

Stack Overflow用户

发布于 2018-02-06 23:48:05

每当您在WHERE语句或SELECT语句you will need to treat everything inside the select statement as an aggregate内的任何其他聚合函数之后调用GROUP BY时,否则您将面临问题:

在你的代码中:

代码语言:javascript
复制
SELECT  `BRANCH_BUDGET`.`RG` ,  
        `BRANCH_BUDGET`.`YEAR` AS  `YEAR` , 
        `DATE_FORMAT(  `BRANCH_BUDGET`.`MONTH` ,  '%M' ) AS  `MONTH` , 
        `Sales_Performance_Region`.`Bookings` ,  
        `Sales_Performance_Region`.`Bookings PY` ,  
        `Sales_Performance_Region`.`Billing` , 
        `Sales_Performance_Region`.`Billing PY` ,  
        `Sales_Performance_Region`.`GP Amt` ,  
        `Sales_Performance_Region`.`GP Amt PY` , 
        SUM( `BRANCH_BUDGET`.`BUDGET` ) AS  `BUDGET` 
FROM (
      `BRANCH_BUDGET` 
       LEFT JOIN  `Sales_Performance_Region` ON (  `BRANCH_BUDGET`.`MONTH` =  
       `Sales_Performance_Region`.`MONTH` )
       )
WHERE  `BRANCH_BUDGET`.`RG` =  'FE'
        AND  `Sales_Performance_Region`.`RG` =  'FE'
        AND  `BRANCH_BUDGET`.`YEAR` =  '2018'
GROUP BY  `BRANCH_BUDGET`.`MONTH` 

您只能按BRANCH_BUDGET.MONTH分组,但不能按任何其他列分组,也不能对任何其他列执行聚合函数(保存BRANCH_BUDGET.BUDGET)。因此,您的输出是错误的,因为它只返回两个月。

票数 0
EN

Stack Overflow用户

发布于 2018-02-07 00:07:37

首先,谢谢你的评论,我想把结果贴出来,以防有人感兴趣。

问题是:我没有从两个表中加入区域(RG)。因此,结果应该类似于下面的代码:

代码语言:javascript
复制
SELECT  `BRANCH_BUDGET`.`RG` ,
`BRANCH_BUDGET`.`YEAR` AS  `YEAR` ,
DATE_FORMAT(  `BRANCH_BUDGET`.`MONTH` , '%M' ) AS  `MONTH` , 
`Sales_Performance_Region`.`Bookings` , 
`Sales_Performance_Region`.`Bookings PY` ,
`Sales_Performance_Region`.`Billing` , 
`Sales_Performance_Region`.`Billing PY` , 
`Sales_Performance_Region`.`GP Amt` , 
`Sales_Performance_Region`.`GP Amt PY` , 
SUM( `BRANCH_BUDGET`.`BUDGET` ) AS  `BUDGET` 
FROM (
 `BRANCH_BUDGET` 
LEFT JOIN  `Sales_Performance_Region` 
    ON (  `Sales_Performance_Region`.`MONTH` =  `BRANCH_BUDGET`.`MONTH` ) 
    AND (  `Sales_Performance_Region`.`RG` =  `BRANCH_BUDGET`.`RG` )
)
WHERE  `BRANCH_BUDGET`.`RG` =  'FE'
AND  `BRANCH_BUDGET`.`YEAR` =  '2018'
GROUP BY  `BRANCH_BUDGET`.`MONTH`
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48646595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档