sql左连接给出重复的多个值

标签 sql postgresql left-join

我无法获取正确结果的 friend 请建议,在此先感谢。 我有两个表并试图获得平衡数量

一个是采购表(purchase_detail)

Pur_Date    Item_Id     Pur_Qty
2014-10-08  12792       25
2014-11-01  133263      20
2014-10-01  133263      2
2014-11-20  12792       10

其次是销售表(sale_detail)

Sale_Date   Item_Id  Sale_Qty
2014-11-17  133263     -6
2014-11-05  12792      -1
2014-11-24  133263     -2
2014-10-28  12792      -6
2014-11-05  133263     -2

使用左连接后 SQL :

select a.pur_item,  sum(a.pur_qty  + b.sold_qty ) as bal_qty
from purchase_item_qty_amount  a left join  sale_item_qty_amount b 
on a.pur_item =b.sale_item  where a.pur_item IN( 12792,133263)
group by 1;

结果 - 但它不正确

Item_Id   Bal_qty 
12792     56
133263    46

结果 - 应该是

Item_Id    Bal_qty
12792      28
133263     12

最佳答案

试试这个未经测试的查询:

select pur_item, sum(as bal_qty) from (
select pur_item,  sum(a.pur_qty) as bal_qty
from purchase_item_qty_amount  a
group by 1
union 
select pur_item, sum(b.sold_qty)as bal_qty
from sale_item_qty_amount b
group by 1)
group by 1

关于sql左连接给出重复的多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27479522/

相关文章:

ruby-on-rails - 什么确定 rails 是否包含 id : :serial in a table definition?

php - 获取连接中的下一条和上一条记录

sql - 选择按时间分组的午夜数据

MySQL 按多个日期和结果分组总计

mysql - 使用一对多 SQL 保留系列顺序

mysql - 没有数据的sql计数查询

mysql - SQL 中的左外连接右表中缺少数据

mysql - 如何在 SQL 中使用集合代数运算

sql - 如何让 Haskell 在编译时检查 SQL?

PostgreSQL 比预期慢