两个表,我要将表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.   

    用LEFT JOINselect b.ddh,a.item,b.ddate
    from a left join b
    on a.item=b.item
      

  2.   

    select t.ddh,t.item,b.ddate
    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
      

  3.   

    1楼的不太完善,更正一下,
    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
      

  4.   


    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
      

  5.   

    select t.ddh,t.item,b.ddate
    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