本文主要是介绍sql 开备货单(毛巾类),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
CREATE PROC proc_sale_beihuo
@sheet_no varchar(20)
as
set nocount on
CREATE TABLE #tmp_sale (ID int IDENTITY(1,1) NOT NULL,客户货号 varchar(50),客户货号名 varchar(100),恒立货号 varchar(100),恒立名称 varchar(100),
客户条码 varchar(50),客户店内码 varchar(50),客户单位 varchar(50), 客户商标 varchar(50), 客户产地 varchar(50),客户包装 varchar(50),
客户颜色 varchar(100),恒立颜色 varchar(50),客户数量 numeric(16,4) , 本仓数量 numeric(16,4) , 库位 varchar(50) ,flag bit )
CREATE TABLE #tmp01 (cus_no varchar(50),henly_no varchar(50),num numeric(16,4))
CREATE TABLE #tmp_aaa (ID int,客户货号 varchar(50),客户货号名 varchar(100),恒立货号 varchar(100),恒立名称 varchar(100),
客户条码 varchar(50),客户店内码 varchar(50),客户单位 varchar(50), 客户商标 varchar(50), 客户产地 varchar(50),客户包装 varchar(50),
客户颜色 varchar(100),恒立颜色 varchar(50),客户数量 numeric(16,4) , 本仓数量 numeric(16,4) , 库位 varchar(50) ,flag bit )
declare
@cus_code varchar(20),--客户货号
@cus_item_name varchar(50),--客户商品名称
@Cus_item_subno varchar(20),--店内码
@Cus_item_unit varchar(20),
@cus_area varchar(20),--客户商品产地
@cus_color varchar(20),--客户商品颜色
@cus_unit varchar(20),--客户商品单位
@cus_codebar varchar(20),--客户条码
@cus_sb varchar(20),--客户商标
@cus_pack varchar(20),--客户包装
@iscombine char(1),
@henly_item_no varchar(20),--恒立商品流水号
@cus_item_no varchar(20),--客户商品流水号
@cusnum numeric(16,4), --数量
@zh_item_no varchar(20),--组合明细流水号
@zh_qty numeric(16,4) --组合明细数量
begin
insert into #tmp01(cus_no,henly_no,num) select kp_cus_item_no,kp_item_no,kp_real_qty from pf_dj_detail where kp_sheet_no=@sheet_no
declare my01 cursor for select cus_no,henly_no,num from #tmp01
open my01
fetch next from my01 into @cus_item_no,@henly_item_no,@cusnum
while (@@fetch_status=0)
begin
set @iscombine=(select top 1 kp_combine_sta from jb_spzl where kp_item_no=@henly_item_no)
if @iscombine='0'--不是组合商品
begin
--直接插入客户货号和我公司货号
insert into #tmp_sale (客户货号,客户货号名,恒立货号,恒立名称,
客户条码,客户店内码,客户单位,客户商标,客户产地,客户包装,
客户颜色,恒立颜色,客户数量,本仓数量, 库位,flag)
select a.cus_code,a.cus_item_name,b.kp_henly_code,b.kp_item_name,a.cus_Codebar,a.cus_item_subno,a.cus_item_unit,a.cus_item_sb,
a.cus_item_area,a.cus_item_pack,a.cus_item_color,b.kp_color,@cusnum,@cusnum,(select top 1 m.kp_place_name from jb_kwzl m,jb_kwspzl n where m.kp_place_no=n.kp_place_no and n.kp_item_no=a.Cus_item_replacecode) as 库位,0
from jb_cus_spzl a,jb_spzl b where a.Kp_Second_Item_No=@cus_item_no and b.kp_item_no=@henly_item_no
-- and a.Cus_item_replacecode=b.kp_item_no
--插入完毕
end
else if @iscombine='1'--是组合商品
begin
--先插入客户主项记录
insert into #tmp_sale (客户货号,客户货号名,恒立货号,恒立名称,
客户条码,客户店内码,客户单位,客户商标,客户产地,客户包装,
客户颜色,恒立颜色,客户数量,本仓数量,flag)
select a.cus_code,a.cus_item_name,b.kp_henly_code,b.kp_item_name,a.cus_Codebar,a.cus_item_subno,a.cus_item_unit,a.cus_item_sb,
a.cus_item_area,a.cus_item_pack,a.cus_item_color,b.kp_color,@cusnum,0,1
from jb_cus_spzl a,jb_spzl b where a.Kp_Second_Item_No=@cus_item_no and b.kp_item_no=@henly_item_no
-- and a.Cus_item_replacecode=b.kp_item_no
--插入主项记录完毕
--定义一个游标找组合商品明细开始
declare myzh cursor for select kp_item_no,kp_item_qty from jb_zhcf where kp_comb_item_no=@henly_item_no
open myzh
fetch next from myzh into @zh_item_no,@zh_qty
while (@@fetch_status=0)
begin
insert into #tmp_sale (客户货号,客户货号名,恒立货号,恒立名称,
客户条码,客户店内码,客户单位,客户商标,客户产地,客户包装,
客户颜色,恒立颜色,客户数量,本仓数量,库位,flag)
select '','明细',c.kp_henly_code,c.kp_item_name,'','','','','','','',kp_color,0,@cusnum*@zh_qty,
(select top 1 m.kp_place_name from jb_kwzl m,jb_kwspzl n where m.kp_place_no=n.kp_place_no and n.kp_item_no=c.kp_item_no) as 库位,1
from jb_spzl c
where c.kp_item_no=@zh_item_no
fetch next from myzh into @zh_item_no,@zh_qty
end
CLOSE myzh
DEALLOCATE myzh
end
fetch next from my01 into @cus_item_no,@henly_item_no,@cusnum
end
CLOSE my01
DEALLOCATE my01
--select * from #tmp_sale order by flag,id
insert into #tmp_aaa
select * from #tmp_sale where flag=0 order by 库位,id
insert into #tmp_aaa
select * from #tmp_sale where flag=1 order by id,库位
select * from #tmp_aaa
drop table #tmp_sale
drop table #tmp01
drop table #tmp_aaa
set nocount off
end
这篇关于sql 开备货单(毛巾类)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!