首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL子查询(库存数量运行时,通过对库存和库存分组的汇总,而不是从库存中减去库存)

SQL子查询(库存数量运行时,通过对库存和库存分组的汇总,而不是从库存中减去库存)
EN

Stack Overflow用户
提问于 2015-05-13 13:22:53
回答 2查看 152关注 0票数 0

我有两个表,库存和库存,我想计算库存的数量运行时,通过总结库存和库存分组,并减去从库存到库存.我的查询运行良好,但是当它在库存表中找不到任何记录时,它会做一些不寻常的计算。

代码语言:javascript
复制
Select 
CASE 
    WHEN 
    (select ISNULL(Items_store.Item_ID,0) from Items_Store where Items_Store.Store_ID = Inventory_Incoming.Store_ID)
    <> 0
    THEN   
    SUM(Quentity)- 
    (select SUM(Items_Out) from Items_Store where Items_Store.Store_ID = Inventory_Incoming.Store_ID)
    ELSE
    SUM(Quentity) 
END as Stock 
,Store_ID,Item_ID
from Inventory_Incoming 
where Item_ID =1

group by 
Store_ID,
Item_ID
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-13 13:43:28

代码语言:javascript
复制
(select ISNULL(Items_store.Item_ID,0) from Items_Store where ...)

从Item_ID获得Items_Store的信息。如果它是null (我想永远不会是这样的),您可以将它替换为0。如果找不到记录,则为NULL。

将此替换为

代码语言:javascript
复制
ISNULL((select Items_store.Item_ID from Items_Store where ...), 0)

但是正如Gordon已经提到的,最好简化您的查询。

编辑:在链接表时,似乎没有使用所有的条件。见这里:

代码语言:javascript
复制
select 
  sum(quentity) - 
  coalesce(
  (
    select sum(items_out) 
    from items_store is
    where is.store_id = ii.store_id and is.item_id = ii.item_id
  ), 0)
from inventory_incoming ii
where item_id =1
group by store_id, item_id;

items_store必须同时由store_id和item_id连接。

票数 0
EN

Stack Overflow用户

发布于 2015-05-13 13:37:48

只需执行以下操作,就可以大大简化查询:

代码语言:javascript
复制
Select (sum(Quentity) - 
        coalesce((select SUM(Items_Out)
                  from Items_Store s
                  where s.Store_ID = ii.Store_ID
                 ), 0)
        ) as Stock, Store_ID, Item_ID
from Inventory_Incoming ii
where ii.Item_ID = 1
group by ii.Store_ID, ii.Item_ID;

也许这会解决你的问题。

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

https://stackoverflow.com/questions/30216181

复制
相关文章

相似问题

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