首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Group之后,SQL仍然有重复项

在Group之后,SQL仍然有重复项
EN

Stack Overflow用户
提问于 2017-02-03 15:21:14
回答 4查看 82关注 0票数 0

我试着在我们的两个仓库之间得到一个总计的qty_on_hand,但是在我做完一组之后,就不合并了。我不知道我做错了什么。

代码语言:javascript
复制
SELECT 
    sku_master.warehouse,
     sku_master.sku
   , sku_master.min_on_hand
   , sku_master.max_on_hand
   , x.total_qty_on_hand

FROM [wms].dbo.[sku_master]

left join
(
  SELECT 
     sku_master.sku, sum(location_inventory.qty_on_hand) as total_qty_on_hand
  FROM [wms].[dbo].[location_inventory]
JOIN [wms].dbo.[sku_master] ON location_inventory.sku = sku_master.sku
      GROUP BY sku_master.sku) x on sku_master.sku = x.sku

结果

预期结果

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-02-03 15:38:48

看起来您想要每个qty_on_hand的和所有sku。尝试使用OUTER APPLY这样的方法

代码语言:javascript
复制
SELECT m.sku,
       m.min_on_hand,
       m.max_on_hand,
       oa.total_qty_on_hand
FROM   (SELECT sku,
               Min(min_on_hand) min_on_hand,
               Max(max_on_hand) max_on_hand
        FROM   [wms].dbo.[sku_master] m
        GROUP  BY sku) m
       OUTER Apply (SELECT Sum(l.qty_on_hand) AS total_qty_on_hand
                    FROM   [wms].[dbo].[location_inventory] l
                    WHERE  l.sku = m.sku) oa 
票数 1
EN

Stack Overflow用户

发布于 2017-02-03 15:35:34

如果您只需要一个总计,那么就不要加入,或者只是为示例添加一个联合

代码语言:javascript
复制
  SELECT 
      sku_master.warehouse,
       sku_master.sku
     , sku_master.min_on_hand
     , sku_master.max_on_hand
     , x.total_qty_on_hand

  FROM [wms].dbo.[sku_master]

  left join
  (
    SELECT 
       sku_master.sku, sum(location_inventory.qty_on_hand) as total_qty_on_hand
    FROM [wms].[dbo].[location_inventory]
  JOIN [wms].dbo.[sku_master] ON location_inventory.sku = sku_master.sku
        GROUP BY sku_master.sku) x on sku_master.sku = x.sku
  union 

  SELECT null, null, nullm null, sum(location_inventory.qty_on_hand)
  FROM [wms].[dbo].[location_inventory]
  JOIN [wms].dbo.[sku_master] ON location_inventory.sku = sku_master.sku

或者你没有分组和重复sku_master.warehouse。删除它表单选择

代码语言:javascript
复制
  SELECT 
       sku_master.sku
     , sku_master.min_on_hand
     , sku_master.max_on_hand
     , x.total_qty_on_hand

  FROM [wms].dbo.[sku_master]

  left join
  (
    SELECT 
       sku_master.sku, sum(location_inventory.qty_on_hand) as total_qty_on_hand
    FROM [wms].[dbo].[location_inventory]
  JOIN [wms].dbo.[sku_master] ON location_inventory.sku = sku_master.sku
        GROUP BY sku_master.sku) x on sku_master.sku = x.sku
票数 0
EN

Stack Overflow用户

发布于 2017-02-03 18:43:05

您可以使用这个简单的查询

代码语言:javascript
复制
 SELECT 
  t.sku, 
  min(t.min_on_hand)  as min_qty_on_Hand,
  max(t.max_on_hand) as max_on_hand,
  sum(t.total_qty_on_hand) + sum(t2.total_qty_on_hand) as total_qty_on_hand
FROM table1 t
inner join table2 t2
 on t.sku = t2.sku
group by t.sku

所附图像显示了包含结果的处理过程。

注意:这里的结果与您在问题中提到的相同,您在这里需要的只是将表名更改为表名。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42027510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档