繁体   English   中英

左连接中的MySQL查询和

[英]MySQL query sum in Left Join

下面的查询是在select和连接两个表中使用SUM。 SUM的结果包括所有期间的金额。 我怀疑这是由于SUM的位置。 我认为这里的帖子包含了我遇到的同样问题。 我试图按照给出的解决方案,但似乎无法让它工作。

查询:

SELECT
  Mo911ZipLookup.X_STATE AS StateAbbr,
  Mo911ZipLookup.X_CITY AS City,
  Mo911ZipLookup.X_COUNTY AS County,
  SUM(SourceDataTCX.E911Amount) AS E911Amount,
  SourceDataTCX.period AS period
FROM (SourceDataTCX
  LEFT JOIN Mo911ZipLookup
    ON ((SourceDataTCX.ZipCode = Mo911ZipLookup.X_ZIPCODE)))
WHERE (Mo911ZipLookup.X_STATE = 'MO' AND SourceDataTCX.period = '2019-02-01')
GROUP BY Mo911ZipLookup.X_STATE,
         Mo911ZipLookup.X_CITY,
         Mo911ZipLookup.X_COUNTY,
         SourceDataTCX.period
ORDER BY Mo911ZipLookup.X_STATE, Mo911ZipLookup.X_COUNTY, Mo911ZipLookup.X_CITY

查询应该仅返回2019-02-01期间的金额,但它包括所有期间的金额。 我认为SUM应该被移入连接中。 有人可以帮助我吗?

编辑查询生成如下结果:

StateAbbr   City    County  E911Amount  period  
MO  BALLWIN SAINT LOUIS 614.80  2019-02-01
MO  ELLISVILLE  SAINT LOUIS 614.80  2019-02-01
MO  MANCHESTER  SAINT LOUIS 614.80  2019-02-01
MO  TWIN OAKS   SAINT LOUIS 614.80  2019-02-01
MO  WILDWOOD    SAINT LOUIS 614.80  2019-02-01
MO  WINCHESTER  SAINT LOUIS 614.80  2019-02-01

每个城市总数的金额显示为所有城市的总数。 我认为SUM正在GROUP BY之前应用。

将过滤器Mo911ZipLookup.X_STATE = 'MO'ON子句:

 SELECT Mo911ZipLookup.X_STATE AS StateAbbr,
   Mo911ZipLookup.X_CITY AS City,
   Mo911ZipLookup.X_COUNTY AS `County,,
   z.E911Amount,
   z.period AS period FROM
(
 SELECT SUM(E911Amount`) AS E911Amount,period AS period, ZipCode
 FROM SourceDataTCX
 WHERE period = '2019-02-01'
GROUP BY period, ZipCode      
) z
LEFT JOIN Mo911ZipLookup ON  z.ZipCode = Mo911ZipLookup.X_ZIPCODE
                      AND Mo911ZipLookup.X_STATE = 'MO' 
ORDER BY Mo911ZipLookup.X_STATE, Mo911ZipLookup.X_COUNTY, Mo911ZipLookup.X_CITY

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM