表A:
交货日期  交货单号  产品编号  交货数量  交货价格 交货总计 开票日期       发票号 数量  单价 发票总计
--------------------------------------------------------------------------------------
2008.01.01  20   11101    100      4       400     2008.02.22   null  null null  null
2008.02.01  23   10301    50       60      3000    2008.02.19   33    50   50   3000
2008.02.01  25   10501    600      4       2400    2008.02.19   32    600  3.5  2400
2008.02.01  30   10302    100      75      7500    null         null  null  null  null
2008.02.01  31   10401    900      4       3600    2008.02.19   53    600  4    2400
2008.02.01  31   10401    900      4       360     2008.02.29   54    300  4    1200
2008.02.01  33   10202    100      12      1200    2008.02.19   28    100  26   2600
2008.02.01  35   10201    100      15      1200    2008.02.01   null  null null null表B:
交货日期  交货单号  产品编号  交货数量  交货价格 交货总计 回款单号    回款日期   收款数量  回款单价 收款总计
2008.01.01  20    11101   100      4       400     771     2008.01.29   50       4      200
2008.01.01  20    11101   100      4       400     772     2008.01.30   50       4      200
2008.02.01  23    10301   50       60      3000    
2008.02.01  25    10501   600      4       2400
2008.02.01  30    10302   100      75      7500 
2008.02.01  31    10401   600      4       2400
2008.02.01  39    10302   50       70      3500
要求合并形成如下:交货日期  交货单号  产品编号  交货数量  交货价格 交货总计 开票日期   发票号 数量  单价 发票总计  数量 单价 发票总计 回款单号 汇款日期 收款数量  回款单价 收款总计
2008.01.01  20   11101    100      4       400   null   null  null  null null   771  2008.01.29  50  4  200
2008.01.01  20   11101    null     null    null  null   null  null  null null   771  2008.01.29  50  4  200
2008.02.01  23   10301    50       60      3000  2008.02.19  33  50  50   3000   null  null   null  null  null
2008.02.01  25   10501    600      4       2400  2008.02.19  32  600  3.5  2400   null  null  null  null  null
2008.02.01  30   10302    100      75      7500  2008.02.29  null  null  null  null  null null  null  null  null 
2008.02.01  31   10401    900      4       3600  2008.02.19  53  600  4  2400  null  null  null  null  null
2008.02.01  31   10401    null     null    null  2008.02.29  54  300  4  1200  null  null  null  null  null
2008.02.01  33   10202    100      26      2600  2008.02.19  28  100  26  2600 null  null  null  null  null
2008.02.01  35   10201    100      12      1200  null  null  null  null  null  null  null  null  null  null 
2008.02.01  39   10302    50       70      3500  null  null  null  null  null  null  null  null  null  null
================================================================================================
画得有点乱,大概就是这么意思,有知道的告诉下,谢谢

解决方案 »

  1.   


    select a.*, b.回款单号    , b.回款日期  , b.收款数量  , b.回款单价 , b.收款总计 
    from 表A a,表B b
    where a.交货日期=b.交货日期
    and a.交货单号=b.交货单号
      

  2.   

    select a.*, b.回款单号    , b.回款日期  , b.收款数量  , b.回款单价 , b.收款总计 
    from 表A a left join 表B b on a.交货单号=b.交货单号 and a.交货日期=b.交货日期
      

  3.   

    select a.*, b.回款单号    , b.回款日期  , b.收款数量  , b.回款单价 , b.收款总计 
    from a,b
    where a.交货日期=b.交货日期 and a.交货单号=b.交货单号
      

  4.   

    ---测试数据---
    if object_id('[A]') is not null drop table [A]
    go
    create table [A]([交货日期] datetime,[交货单号] int,[产品编号] int,[交货数量] int,[交货价格] int,[交货总计] int,[开票日期] datetime,[发票号] int,[数量] int,[单价] numeric(3,1),[发票总计] int)
    insert [A]
    select '2008.01.01',20,11101,100,4,400,'2008.02.22',null,null,null,null union all
    select '2008.02.01',23,10301,50,60,3000,'2008.02.19',33,50,50,3000 union all
    select '2008.02.01',25,10501,600,4,2400,'2008.02.19',32,600,3.5,2400 union all
    select '2008.02.01',30,10302,100,75,7500,null,null,null,null,null union all
    select '2008.02.01',31,10401,900,4,3600,'2008.02.19',53,600,4,2400 union all
    select '2008.02.01',31,10401,900,4,360,'2008.02.29',54,300,4,1200 union all
    select '2008.02.01',33,10202,100,12,1200,'2008.02.19',28,100,26,2600 union all
    select '2008.02.01',35,10201,100,15,1200,'2008.02.01',null,null,null,null
    if object_id('[B]') is not null drop table [B]
    go
    create table [B]([交货日期] datetime,[交货单号] int,[产品编号] int,[交货数量] int,[交货价格] int,[交货总计] int,[回款单号] int,[回款日期] datetime,[收款数量] int,[回款单价] int,[收款总计] int)
    insert [B]
    select '2008.01.01',20,11101,100,4,400,771,'2008.01.29',50,4,200 union all
    select '2008.01.01',20,11101,100,4,400,772,'2008.01.30',50,4,200 union all
    select '2008.02.01',23,10301,50,60,3000,null,null,null,null,null union all
    select '2008.02.01',25,10501,600,4,2400,null,null,null,null,null union all
    select '2008.02.01',30,10302,100,75,7500,null,null,null,null,null union all
    select '2008.02.01',31,10401,600,4,2400,null,null,null,null,null union all
    select '2008.02.01',39,10302,50,70,3500,null,null,null,null,null
     
    ---查询---
    select 
      isnull(a.交货日期,b.交货日期) as 交货日期,
      isnull(a.交货单号,b.交货单号) as 交货单号,
      isnull(a.产品编号,b.产品编号) as 产品编号,
      isnull(a.交货数量,b.交货数量) as 交货数量,
      isnull(a.交货价格,b.交货价格) as 交货价格,
      isnull(a.交货总计,b.交货总计) as 交货总计,
      a.开票日期,
      a.发票号,
      a.数量,
      a.单价,
      a.发票总计,
      b.回款单号,
      b.回款日期,
      b.收款数量,
      b.回款单价,
      b.收款总计
    from 
      a 
    full join 
      b 
    on 
      a.交货日期=b.交货日期 
    and 
      a.交货单号=b.交货单号
    and
      a.产品编号=b.产品编号
    ---结果---
    交货日期                                                交货单号     产品编号     交货数量    交货价格    交货总计     开票日期                                                发票号      数量        单价  发票总计     回款单号     回款日期                                                收款数量     回款单价     收款总计        
    ------------------------------------------------------ ----------- ----------- ----------- ----------- ----------- ------------------------------------------------------ ----------- ----------- ----- ----------- ----------- ------------------------------------------------------ ----------- ----------- ----------- 
    2008-01-01 00:00:00.000                                20          11101       100         4           400         2008-02-22 00:00:00.000                                NULL        NULL        NULL  NULL        771         2008-01-29 00:00:00.000                                50          4           200
    2008-01-01 00:00:00.000                                20          11101       100         4           400         2008-02-22 00:00:00.000                                NULL        NULL        NULL  NULL        772         2008-01-30 00:00:00.000                                50          4           200
    2008-02-01 00:00:00.000                                23          10301       50          60          3000        2008-02-19 00:00:00.000                                33          50          50.0  3000        NULL        NULL                                                   NULL        NULL        NULL
    2008-02-01 00:00:00.000                                25          10501       600         4           2400        2008-02-19 00:00:00.000                                32          600         3.5   2400        NULL        NULL                                                   NULL        NULL        NULL
    2008-02-01 00:00:00.000                                30          10302       100         75          7500        NULL                                                   NULL        NULL        NULL  NULL        NULL        NULL                                                   NULL        NULL        NULL
    2008-02-01 00:00:00.000                                31          10401       900         4           3600        2008-02-19 00:00:00.000                                53          600         4.0   2400        NULL        NULL                                                   NULL        NULL        NULL
    2008-02-01 00:00:00.000                                31          10401       900         4           360         2008-02-29 00:00:00.000                                54          300         4.0   1200        NULL        NULL                                                   NULL        NULL        NULL
    2008-02-01 00:00:00.000                                33          10202       100         12          1200        2008-02-19 00:00:00.000                                28          100         26.0  2600        NULL        NULL                                                   NULL        NULL        NULL
    2008-02-01 00:00:00.000                                35          10201       100         15          1200        2008-02-01 00:00:00.000                                NULL        NULL        NULL  NULL        NULL        NULL                                                   NULL        NULL        NULL
    2008-02-01 00:00:00.000                                39          10302       50          70          3500        NULL                                                   NULL        NULL        NULL  NULL        NULL        NULL                                                   NULL        NULL        NULL(所影响的行数为 10 行)
      

  5.   

    select 
      isnull(a.交货日期,b.交货日期) as 交货日期,
      isnull(a.交货单号,b.交货单号) as 交货单号,
      isnull(a.产品编号,b.产品编号) as 产品编号,
      isnull(a.交货数量,b.交货数量) as 交货数量,
      isnull(a.交货价格,b.交货价格) as 交货价格,
      isnull(a.交货总计,b.交货总计) as 交货总计,
      a.开票日期,
      a.发票号,
      a.数量,
      a.单价,
      a.发票总计,
      b.回款单号,
      b.回款日期,
      b.收款数量,
      b.回款单价,
      b.收款总计
    from 
      a 
    full join 
      b 
    on 
      a.交货日期=b.交货日期 
    and 
      a.交货单号=b.交货单号
    and
      a.产品编号=b.产品编号