期初
倉庫 產品 數量
A P001 100
A P002 200
B P001 120
發出
倉庫 產品 發出數量
A P001 50
B P001 30
收入
倉庫 產品 發出數量
A P001 10
A P002 20
C P001 15
C P003 10
要求結果
倉庫 產品 期初 發出 收入 結存
A P001 100 50 10 60
A P002 200 0 20 220
B P001 120 30 0 90
C P001 0 0 15 15
C P003 0 0 10 10
uj5u.com熱心網友回復:
DECLARE @期初 TABLE(倉庫 NVARCHAR(10) NOT NULL,產品 NVARCHAR(10) NOT NULL,數量 INT NOT NULL)
INSERT @期初( 倉庫, 產品, 數量)
VALUES('A','P001',100),('A','P002', 200),('B','P001', 120 )
DECLARE @發出 TABLE(倉庫 NVARCHAR(10) NOT NULL, 產品 NVARCHAR(10) NOT NULL, 發出數量 INT NOT NULL)
INSERT @發出 ( 倉庫, 產品, 發出數量 )
VALUES('A','P001',50 ),('B','P001',30 )
DECLARE @收入 TABLE(倉庫 NVARCHAR(10) NOT NULL, 產品 NVARCHAR(10) NOT NULL, 發出數量 INT NOT NULL)
INSERT @收入(倉庫, 產品, 發出數量)
VALUES('A','P001',10),('A','P002',20),
('C','P001', 15 ),('C','P003',10 )
--要求結果
--倉庫 產品 期初 發出 收入 結存
--A P001 100 50 10 60
--A P002 200 0 20 220
--B P001 120 30 0 90
--C P001 0 0 15 15
--C P003 0 0 10 10
SELECT p.倉庫, p.產品, COALESCE(p.期初,0) 期初, COALESCE(p.發出,0)*-1 發出,
COALESCE(p.收入,0) 收入, COALESCE(p.期初,0)+COALESCE(p.發出,0)+COALESCE(p.收入,0) 結存 FROM (
SELECT 倉庫, 產品, 數量,'期初' AS 類別 FROM @期初
UNION ALL SELECT 倉庫, 產品, -發出數量, '發出' FROM @發出
UNION ALL SELECT 倉庫, 產品, 發出數量,'收入' FROM @收入) list PIVOT (SUM(數量) FOR 類別 IN (期初,發出,收入)) p
ORDER BY p.倉庫,p.產品
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/254614.html
標籤:基礎類
