有两个表
发出表
物料编号、物料名称、发出数
1 DD 123
1 DD 456
2 CC 789
收回表
物料编号、物料名称、收回数
1 DD 124
1 DD 454
2 CC 749
本人想查询发出表的按物料编号汇总发出数和收回表的按物料编号汇总收回数以及汇总收回与发出的差如何写呢??
多谢多谢!!
发出表
物料编号、物料名称、发出数
1 DD 123
1 DD 456
2 CC 789
收回表
物料编号、物料名称、收回数
1 DD 124
1 DD 454
2 CC 749
本人想查询发出表的按物料编号汇总发出数和收回表的按物料编号汇总收回数以及汇总收回与发出的差如何写呢??
多谢多谢!!
isnull(a.物料编号,b.物料编号) as 物料编号,
isnull(a.物料名称,b.物料名称) as 物料名称,
isnull(a.发出,0) as 发出,
isnull(b.收回,0) as 收回,
isnull(a.发出)-isnull(b.收回,0) as 差值
from
(select 物料编号,物料名称,sum(发出数) as 发出 from 发出表 group by 物料编号,物料名称) a
full outer join
(select 物料编号,物料名称,sum(收回数) as 收回 from 收回表 group by 物料编号,物料名称) b
on
a.物料编号=b.物料编号 and a.物料名称=b.物料名称
(
物料编号 INT,
物料名称 VARCHAR(20),
发出数 INT
)INSERT INTO 发出表
SELECT 1,'DD',123 UNION ALL
SELECT 1,'DD',456 UNION ALL
SELECT 2,'CC',789
CREATE TABLE 收回表
(
物料编号 INT,
物料名称 VARCHAR(20),
收回数 INT
)INSERT INTO 收回表
SELECT 1,'DD',124 UNION ALL
SELECT 1,'DD',454 UNION ALL
SELECT 2,'CC',749SELECT A.物料编号,A.物料名称,A.发出数, B.收回数, 差额=A.发出数-B.收回数 FROM
(
SELECT 物料编号,物料名称,发出数=SUM(发出数) FROM 发出表 GROUP BY 物料编号,物料名称
) A INNER JOIN
(
SELECT 物料编号,物料名称,收回数=SUM(收回数) FROM 收回表 GROUP BY 物料编号,物料名称
) B ON A.物料编号 = B.物料编号 AND B.物料名称 = A.物料名称
DROP TABLE 发出表,收回表
物料编号 物料名称 发出数 收回数 差额
----------- -------------------- ----------- ----------- -----------
1 DD 579 578 1
2 CC 789 749 40(所影响的行数为 2 行)
a full outer join是有什么功效???