计划表
CardNo ItemNo 计划数
X 1 2
X 2 4实际生产表
CardNo ItemNo 实际数
X 1 2
X 3 1要求报表结果:
CardNo ItemNo 计划数 实际数
X 1 2 2
X 2 4 0
X 3 0 1请问报表能否用一个语句连接两个表得到?谢谢!
CardNo ItemNo 计划数
X 1 2
X 2 4实际生产表
CardNo ItemNo 实际数
X 1 2
X 3 1要求报表结果:
CardNo ItemNo 计划数 实际数
X 1 2 2
X 2 4 0
X 3 0 1请问报表能否用一个语句连接两个表得到?谢谢!
itemno=isnull(a.itemno,b.itemno),
计划数=isnull(a.计划数,0),
实际数=isnull(b.实际数,0)
from 计划表 a full join 实际生产表 b on a.cardno=b.cardno and a.itemno=b.itemno
(select CardNo,ItemNo from 计划表 union select CardNo,ItemNo from 实际生产表)A
left join 计划表 on A.CardNo=B.CardNo left join 实际生产表 C on A.CardNo=c.CardNo
create table 实际生产表(cardno char(5),itemno int,实际数 int)
insert into 计划表
select'X',1 ,2
union select 'X', 2 ,4insert into 实际生产表
select 'X' , 1 , 2
union select 'X' , 3 , 1
/*
要求报表结果:
CardNo ItemNo 计划数 实际数
X 1 2 2
X 2 4 0
X 3 0 1*/select cardno=isnull(a.cardno,b.cardno),
itemno=isnull(a.itemno,b.itemno),
计划数=isnull(a.计划数,0),
实际数=isnull(b.实际数,0)
from 计划表 a full join 实际生产表 b on a.cardno=b.cardno and a.itemno=b.itemno
order by isnull(a.cardno,b.cardno),isnull(a.itemno,b.itemno)
drop table 计划表,实际生产表
select A.*,isnull(B.计划数,0),isnull(C.计划数,0) from
(select CardNo,ItemNo from 计划表 union select CardNo,ItemNo from 实际生产表)A
left join 计划表 on A.CardNo=B.CardNo left join 实际生产表 C on A.CardNo=c.CardNo
FROM dbo.计划表 AS a FULL OUTER JOIN
dbo.实际生产表 AS b ON a.CardNo = b.CardNo AND a.ItemNo = b.ItemNo