[英]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.