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