mysql - Join 和 Group by Clause 给出了错误的输出

标签 mysql sql join group-by

我有两个包含列(代码、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/

相关文章:

sql - 如何在不锁定表的情况下向 Postgres 中的 ENUM 添加新值?

sql - 更新数据库中尚未存在于表中的多条记录

php - pdo mysql 连接不工作

mysql - SQL,其中列不是一对多关系中一对一的值

MySQL 左连接使用不同的参数作为 group by 给出不同的结果

mysql - 根据关联的创建日期对关联对象进行排序

mysql - 范围约束数字 MySQL 列 : how?

sql - Azure 表单识别对 Microsoft SQL 表的 JSON 响应

mysql - SQL 命名连接表

Mysql查询优化外键