create table 货品基础资料表
(
货品编码 int not null,
货品名称 char(10) null
)
insert into 货品基础资料表
select 001,'酒'
union
SELECT 002,'烟'
(
货品编码 int not null,
货品名称 char(10) null
)
insert into 货品基础资料表
select 001,'酒'
union
SELECT 002,'烟'
create table 主表
(
仓库编号 int not null,
仓库名称 char(10) null
)
INSERT INTO 主表
SELECT 1,'一号仓库'
UNION
SELECT 2,'二号仓库'
(
仓库编号 int not null,
仓库名称 char(10) null
)
INSERT INTO 主表
SELECT 1,'一号仓库'
UNION
SELECT 2,'二号仓库'
create table 从表
(
仓库编号 INT NOT NULL,
货品编码 INT NOT NULL,
数量 INT NULL
)
INSERT INTO 从表
SELECT 1,001,3
UNION
SELECT 1,002,5
UNION
SELECT 2,001,6
UNION
SELECT 2,001,1
(
仓库编号 INT NOT NULL,
货品编码 INT NOT NULL,
数量 INT NULL
)
INSERT INTO 从表
SELECT 1,001,3
UNION
SELECT 1,002,5
UNION
SELECT 2,001,6
UNION
SELECT 2,001,1
SELECT 货品基础资料表.货品编码,货品基础资料表.货品名称,一号仓库=ISNULL(SUM(CASE T1.仓库编号 WHEN 1 THEN 数量 ELSE 0 END),0),
二号仓库=ISNULL(SUM(CASE T1.仓库编号 WHEN 2 THEN 数量 ELSE 0 END),0)
FROM 货品基础资料表
RIGHT JOIN (SELECT 货品编码,仓库编号,数量=SUM(数量) FROM 从表 GROUP BY 货品编码,仓库编号) T1 ON T1.货品编码=货品基础资料表.货品编码
GROUP BY 货品基础资料表.货品编码,货品基础资料表.货品名称
二号仓库=ISNULL(SUM(CASE T1.仓库编号 WHEN 2 THEN 数量 ELSE 0 END),0)
FROM 货品基础资料表
RIGHT JOIN (SELECT 货品编码,仓库编号,数量=SUM(数量) FROM 从表 GROUP BY 货品编码,仓库编号) T1 ON T1.货品编码=货品基础资料表.货品编码
GROUP BY 货品基础资料表.货品编码,货品基础资料表.货品名称