我的一张库存表
库存表(款号,颜色,尺码,数量,价格,金额)
现在我又一张采购明细表
采购明细表(凭证单号,款号,颜色,尺码,数量,折扣,单价,金额)现在我要点击入库就把采购明细表中的所有的数据批量添加到库存表如果库存表中有这个款号和颜色尺码的就在以前的数量上增加现在新的数量
没有的话就添加一个新的到库存表 如果采购类型是退货就在库存表中减少数据 求高手帮忙 在线等啊 谢谢了啊
库存表(款号,颜色,尺码,数量,价格,金额)
现在我又一张采购明细表
采购明细表(凭证单号,款号,颜色,尺码,数量,折扣,单价,金额)现在我要点击入库就把采购明细表中的所有的数据批量添加到库存表如果库存表中有这个款号和颜色尺码的就在以前的数量上增加现在新的数量
没有的话就添加一个新的到库存表 如果采购类型是退货就在库存表中减少数据 求高手帮忙 在线等啊 谢谢了啊
inner join (select 款号,sum(case 采购类型 when 1 then 数量 when 2 then -数量 end)qty from 采购明细表 group by 款号) b
on a.款号=b.款号insert 库存表
select 款号,sum(case 采购类型 when 1 then 数量 when 2 then -数量 end)qty
from 采购明细表 where 款号 not in (select 款号 from 库存表)
group by 款号
insert 库存表
select 款号,颜色,尺码,sum(case 采购类型 when 1 then 数量 when 2 then -数量 end) 数量,金额
from 采购明细表 where 款号 not exist (select 款号 from 库存表 where 采购明细表.款号=库存表.款号)
group by 款号,颜色,尺码,金额
-- 同一款,颜色,尺码,金额应该是相同的吧
库存表
select
款号,sum(case 采购类型 when 1 then 数量 when 2 then -数量 end)t
from
采购明细表
where
款号
not in
(select 款号 from 库存表)
group by
款号
--判断条件是否成立
if exists(select * from [库存表] a
where exists(select * from [采购明细表] where a.[款号]=[款号] and a.[颜色尺码]=[颜色尺码]) --判断条件自己给
begin
update a set a.数量=a.数量+b.qty from [库存表] a
inner join (
select 款号,sum(case 采购类型 when 1 then 数量 when 2 then -数量 end)qty
from [采购明细表] group by 款号
) b on a.款号=b.款号 end
else
begin
insert [库存表]
select 款号,sum(case 采购类型 when 1 then 数量 when 2 then -数量 end)qty
from [采购明细表] where 款号 not in (select 款号 from 库存表)
group by 款号
end
Begin
Update 库存表 Set A.数量 = (Case When 采购类型 = 1 Then A.数量 + B.数量 Else A.数量 - B.数量)
From 库存表 A,采购明细表 B
Where A.款号 = B.款号 And A.颜色 = B.颜色 And A.尺码 = B.尺码 And B.入库标记 = 0
Update 采购明细表 Set 入库标记 = 1 Where 入库标记 = 0 --增加入库标记
End
Else
Insert Into 库存表(款号,颜色,尺码,数量,价格,金额)
Select 款号,颜色,尺码,数量,价格,金额 From
(Select 款号,颜色,尺码,IsNull(Sum(数量),0) 数量,价格,IsNull(Sum(金额),0) 金额 From 采购明细表 Where 入库标记 = 0 Group By 款号,颜色,尺码,价格) T
你这个判断很怪异,为什么存在1就update,否则就insert,还不如不判断。
Begin
Update 库存表 Set A.数量 = (Case When 采购类型 = 1 Then A.数量 + B.数量 Else A.数量 - B.数量)
From 库存表 A,采购明细表 B
Where A.款号 = B.款号 And A.颜色 = B.颜色 And A.尺码 = B.尺码 And B.入库标记 = 0
Update 采购明细表 Set 入库标记 = 1
Where 入库标记 = 0 And Exists(Select A.* From 库存表 A,采购明细表 B Where A.款号 = B.款号 And A.颜色 = B.颜色 And A.尺码 = B.尺码)--增加入库标记
End
Else
Insert Into 库存表(款号,颜色,尺码,数量,价格,金额)
Select 款号,颜色,尺码,数量,价格,金额 From
(Select 款号,颜色,尺码,IsNull(Sum(数量),0) 数量,价格,IsNull(Sum(金额),0) 金额 From 采购明细表 Where 入库标记 = 0 Group By 款号,颜色,尺码,价格) T
Update 采购明细表 Set 入库标记 = 1 Where 入库标记 = 0 And Not Exists(Select A.* From 库存表 A,采购明细表 B Where A.款号 = B.款号 And A.颜色 = B.颜色 And A.尺码 = B.尺码)--增加入库标记