我有两个包含列(代码、Qtr、Fy、限制)的表 L 和包含(代码、Qtr、Fy、限制)的 R。我想通过代码 Qtr 和 Fy 获取左右表组的限制总和
以下查询运行没有错误,但输出错误,任何人都可以帮助我获得正确的输出。如果我只使用一张 table ,它工作正常。我猜问题出在加入
select L.Code, L. Qtr, L.FY, sum(L.limit),sum(R.Limit)
from tbl L,tbl R Where
L.Code=R.Code AND
L.Qtr=R.Qtr AND
L.FY=R.FY
group by L.Code,L.Qtr,L.FY
示例数据(该表也包含其他列,但这里我只保留选中的)
Tbl L
Code Qtr, Fy Limit
001 1 70 200
001 1 70 700
001 2 70 500
001 2 70 300
Table R
Code Qtr Fy Limit
001 1 70 1000
001 1 70 200
001 2 70 50
001 2 70 125
Result
Code Qtr Fy Sum(l.Limit) sum(R.Limit)
001 1 70 900 1200
001 2 70 800 175
我正在使用 Mysql
最佳答案
试试这个查询:
select code, qtr, fy, sum(lsum), sum(rsum)
from (
select L.Code, L.Qtr, L.FY, L.limit as lsum, 0 as rsum
from L
union all
select R.Code, R.Qtr, R.FY, 0 as lsum, R.limit as rsum
from R) as combined
group by code, qtr, fy
在这种情况下使用 join
是一个错误的想法,因为它会创建多个记录(一个用于 L 和 R 之间的每个匹配项),然后当您执行 sum
你会得到不正确的结果。
关于mysql - Join 和 Group by Clause 给出了错误的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19218848/