【发布时间】:2015-05-13 10:38:58
【问题描述】:
我有两个表,表 P 和表 Q,每个表有 10 行和 2 行。
当我使用以下代码从表 P 中减去(求数量)表 Q 时,减法会影响所有(10 行)行。减法将基于批号。
查看我使用的代码:
select p.batch,p.QTY-COALESCE(q.QTY,0) INSTOCK from
(
select a.[ITEM CATEGORY NAME] cat,b.[ITM SUB CATEGORY NAME] subcat,c.[ITM BRAND DES] brand,d.[BTH NAME] batch,SUM(e.[INV QUANTITY]) QTY
from dbo.ITEM_CATEGORY a,dbo.ITM_SUB_CATEGORY b,dbo.ITM_BRAND_DES c,dbo.STK_BATC`enter code here`H d,dbo.INVENTORY_MASTER e
where
a.[ITEM CATEGORY ID]=e.[INV CATEGORY] and
b.[ITM SUB CATEGORY ID]=e.[INV ITEM NAME ID] and
c.[ITM BRAND ID]=e.[INV ITEM BRAND ID] and
d.[BTH ID]=e.[INV BATCH ID] and
e.[INV PROCESS]='IN'
group by a.[ITEM CATEGORY NAME],b.[ITM SUB CATEGORY NAME],c.[ITM BRAND DES],d.[BTH NAME],e.[INV BATCH ID]) AS p
CROSS APPLY
(select a.[ITEM CATEGORY NAME] cat,b.[ITM SUB CATEGORY NAME] subcat,c.[ITM BRAND DES] brand,d.[BTH NAME] batch,COALESCE(SUM(e.[INV QUANTITY]),0) QTY
from dbo.ITEM_CATEGORY a,dbo.ITM_SUB_CATEGORY b,dbo.ITM_BRAND_DES c,dbo.STK_BATCH d,dbo.INVENTORY_MASTER e
where
a.[ITEM CATEGORY ID]=e.[INV CATEGORY] and
b.[ITM SUB CATEGORY ID]=e.[INV ITEM NAME ID] and
c.[ITM BRAND ID]=e.[INV ITEM BRAND ID] and
d.[BTH ID]=e.[INV BATCH ID] and
e.[INV PROCESS]='OUT'
group by a.[ITEM CATEGORY NAME],b.[ITM SUB CATEGORY NAME],c.[ITM BRAND DES],d.[BTH NAME],e.[INV BATCH ID]) AS q
我知道理解起来很复杂,但您会了解我是如何编码的。有没有最好的方法来从另一个表中减去一个表?
【问题讨论】:
-
从表 P 中减去表 Q 到底是什么意思?
-
@ZoharPeled:选择包含
p.QTY-COALESCE(q.QTY,0)。 -
检查批号的条件在哪里
-
您能否展示一些示例数据和预期结果。
-
亲爱的,感谢您的考虑,我可以通过以下给出的查询来解决问题..
标签: sql sql-server sql-server-2008 sql-server-2008-r2