DISTINCT在左联接中无法正常工作

图灵

我有两个桌子StockInStockOut

StockIntable具有产品的ID号,此ID号在StockIn表中是唯一的,否则该ID号将在StockOut表中重复,因为库存将被售罄。

现在,我想创建一个视图以查找StockIn.Id=的现有库存StockOut.Id到目前为止,我设法进行查询,并且给出了结果,但是当StockOut同一产品表中有多个订单时,由于重复的ID号,它失败了。

以下是我的查询:

select DISTINCT
  i.Id, 
  i.AssetsName, 
  i.Rate,
  i.Qty,
  So.QtyOut,  
   Balance =  sum( COALESCE(i.Qty,0)- COALESCE(so.QtyOut,0)) OVER(PARTITION BY i.id)
  from  dbo.StockIn i 
  LEFT Join  StockOut So
    on   i.Id =   So.Id
GO
暴风雨

一个简单的GROUP BY和正常的SUM即可。

SELECT
 si.Id, 
 si.AssetsName, 
 si.Rate,
 si.Qty,
 SUM(so.QtyOut) AS QtyOut,  
 COALESCE(si.Qty, 0) - SUM(so.QtyOut) AS Balance
FROM dbo.StockIn si 
LEFT JOIN dbo.StockOut so ON so.Id = si.Id
GROUP BY si.Id, si.AssetsName, si.Rate, si.Qty;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章