两个表,我要将表b所有的订单的四个周期全部显示,如果没有,ddate显示为空比如表aid item
1 物料齐套时间
2 包装日期
3 完成日
4 接单完工
表b
ddh item ddate
1042 物料齐套时间 2009-10-21
1042 接单完工 2009-12-21
1043..
.
.
现要得到一个表
ddh item ddate
1042 物料齐套时间 2009-10-21
1042 包装日期 null
1042 完成日 null
1042 接单完工 2009-12-21
.
.
1 物料齐套时间
2 包装日期
3 完成日
4 接单完工
表b
ddh item ddate
1042 物料齐套时间 2009-10-21
1042 接单完工 2009-12-21
1043..
.
.
现要得到一个表
ddh item ddate
1042 物料齐套时间 2009-10-21
1042 包装日期 null
1042 完成日 null
1042 接单完工 2009-12-21
.
.
from a left join b
on a.item=b.item
from (
select a.*,t1.ddh from A cross join (select distinct ddh from B) as t1
) as t left join B
on B.item = t.item
select a.ddh,a.item,b.ddate
from (select distinct a.item,b.ddh,a.id from a,b) a left join b
on a.item=b.item
order by a.ddh,a.id
DECLARE @T1 TABLE(id int,item nvarchar(20))
insert @T1
SELECT 1,'物料齐套时间' UNION ALL
SELECT 2,'包装日期' UNION ALL
SELECT 3,'完成日' UNION ALL
SELECT 4,'接单完工'
DECLARE @T2 TABLE(ddh int,item nvarchar(20),ddate smalldatetime)
insert @T2
SELECT 1042,'物料齐套时间','2009-10-21' UNION ALL
SELECT 1042,'接单完工','2009-12-21' UNION ALL
SELECT 1043,'物料齐套时间','2009-12-22'select a.ddh,a.item,b.ddate
from (select distinct a.item,b.ddh,a.id from @T1 a,@T2 b) a
left join @T2 b on a.item=b.item and a.ddh=b.ddh
order by a.ddh,a.idddh item ddate
----------- -------------------- -----------------------
1042 物料齐套时间 2009-10-21 00:00:00
1042 包装日期 NULL
1042 完成日 NULL
1042 接单完工 2009-12-21 00:00:00
1043 物料齐套时间 2009-12-22 00:00:00
1043 包装日期 NULL
1043 完成日 NULL
1043 接单完工 NULL
from (
select a.*,t1.ddh from A cross join (select distinct ddh from B) as t1
) as t left join B
on B.item = t.item