销售流向平调级数判断

本文介绍了通过SQL语句实现的数据操作,包括数据录入、更新、分类与层级调整。通过示例展示了如何创建表、插入记录,并根据业务流程进行不同类型的交易(购入、销售、平调)标记。关键步骤包括设置默认值、更新层级状态和动态调整业务级别。最后,通过SQL查询显示了不同业务阶段的汇总数据。
摘要由CSDN通过智能技术生成
DECLARE @pici VARCHAR(40)
SET @pici = 'JHAA0000005381_2'

CREATE TABLE #spls(
	id INT NOT NULL IDENTITY(1,1)
   ,rq VARCHAR(10) NULL  DEFAULT ''
   ,djbh VARCHAR(15) NULL  DEFAULT ''
   ,spid VARCHAR(11) NULL  DEFAULT ''
   ,hw VARCHAR(11) NULL  DEFAULT ''
   ,pihao VARCHAR(50) NULL  DEFAULT ''
   ,pic VARCHAR(50) NULL DEFAULT ''
   ,rkshl INT NULL DEFAULT 0
   ,chkshl INT NULL DEFAULT 0
   ,jcshl INT NULL DEFAULT 0
   ,zhy VARCHAR(20) NULL DEFAULT ''
   ,sc_dwbh VARCHAR(11) NULL  DEFAULT ''
   ,sy_dwbh VARCHAR(11) NULL  DEFAULT ''
   ,level INT NULL DEFAULT -99
   ,pd_dwbh VARCHAR(11) NULL  DEFAULT ''
   ,zd_dwbh VARCHAR(11) NULL  DEFAULT ''   
)

INSERT INTO #spls (rq,djbh,spid,hw,pihao,pic,rkshl,chkshl,jcshl,zhy,sc_dwbh,sy_dwbh,level,pd_dwbh,zd_dwbh)
SELECT a.rq,a.djbh,b.spid,b.hw,b.pihao,b.pici,b.shl,0,0
      ,CASE WHEN a.djbs = 'JHA' THEN '购进入库'
            WHEN a.djbs = 'JHC' THEN '购进退出'
       END AS zhy
      ,a.dwbh_sy AS sc_dwbh,a.dwbh AS sy_dwbh,-98 AS level,'' AS pd_dwbh,'' AS zd_dwbh 
FROM jh_rkhz AS a(NOLOCK)
     INNER JOIN jh_rkmx AS b(NOLOCK) ON a.djbh = b.djbh 
WHERE b.pici = @pici

UNION ALL 
 
SELECT a.rq,a.djbh,b.spid,b.hw,b.pihao,b.pici,0,b.shl,0
      ,CASE WHEN a.djbs = 'XSA' THEN '销售出库'
            WHEN a.djbs = 'XSC' THEN '销售退回'
       END AS zhy
      ,'' AS sc_dwbh,a.dwbh_sy AS sy_dwbh,-99 AS level,'' AS pd_dwbh,a.dwbh AS zd_dwbh 
FROM pf_ckhz AS a(NOLOCK)
     INNER JOIN pf_ckmx AS b(NOLOCK) ON a.djbh = b.djbh
     INNER JOIN huoweizl AS c(NOLOCK) ON b.hw = c.hw
WHERE b.pici = @pici
  
UNION ALL 

SELECT a.rq,a.djbh,b.spid,b.dchw,b.pihao,b.pici,0,b.shl,0
      ,'平调移库' AS zhy
      ,'' AS sc_dwbh,c.dwbh AS sy_dwbh,0 AS level,d.dwbh AS pd_dwbh,'' AS zd_dwbh
FROM dbckhz AS a(NOLOCK)
     INNER JOIN dbckmx AS b(NOLOCK) ON a.djbh = b.djbh
     INNER JOIN huoweizl AS c(NOLOCK) ON a.dchw = c.hw
     INNER JOIN huoweizl AS d(NOLOCK) ON a.drhw = d.hw
WHERE b.pici = @pici
ORDER BY rq ASC 

DECLARE @sy_dwbh VARCHAR(11)
SELECT TOP 1 @sy_dwbh = a.sy_dwbh FROM #spls AS a WHERE a.level = -98
/*一级*/
UPDATE a
SET a.level = 1
FROM #spls AS a
WHERE a.pd_dwbh <> '' AND a.sy_dwbh = @sy_dwbh

/*一级退*/
UPDATE a
SET a.level = -1
FROM #spls AS a
WHERE a.pd_dwbh <> '' AND a.level < 2 AND a.sy_dwbh != @sy_dwbh AND a.pd_dwbh = @sy_dwbh

/*二级*/ 
UPDATE a
SET a.level = 2
FROM #spls AS a
WHERE a.pd_dwbh <> '' AND a.level = 0 AND a.pd_dwbh != @sy_dwbh
      AND EXISTS(
                 SELECT 1
                 FROM #spls AS b
                 WHERE b.pd_dwbh <> '' AND b.level = 1 AND b.sy_dwbh = @sy_dwbh
                       AND a.sy_dwbh = b.pd_dwbh
                )
 
/*二级退*/  
                            
UPDATE a
SET a.level = -2
FROM #spls AS a
WHERE a.pd_dwbh <> '' AND a.level = 2 AND a.sy_dwbh != @sy_dwbh AND a.pd_dwbh != @sy_dwbh
      AND EXISTS(
                 SELECT 1
                 FROM #spls AS b
                 WHERE b.pd_dwbh <> '' AND b.level = 2 AND b.sy_dwbh != @sy_dwbh AND b.pd_dwbh != @sy_dwbh
                       AND a.pd_dwbh = b.sy_dwbh
                       AND a.pd_dwbh != @sy_dwbh
                )
               
/*三级*/ 
UPDATE a
SET a.level = 2
FROM #spls AS a
WHERE a.pd_dwbh <> '' AND a.level = 0 
      AND EXISTS(
                 SELECT 1
                 FROM #spls AS b
                 WHERE b.pd_dwbh <> '' AND b.level = 2 AND b.sy_dwbh != @sy_dwbh
                       AND a.sy_dwbh = b.pd_dwbh
                )


SELECT * FROM #spls a WHERE a.pd_dwbh <> ''
--SELECT DISTINCT sy_dwbh,pd_dwbh FROM #spls a WHERE a.pd_dwbh <> '' ORDER BY pd_dwbh ASC 

DROP TABLE #spls

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值