left joinselect a.采购单,a.采购单行,isnull(b.应付日期,a.应付日期) as 应付日期,
  isnull(b.应付金额,a.应付金额) as 应付金额,
  a.供应商,a.条款 
from a left join b
on a.采购单=b.采购单
and a.采购单行=b.采购单行

解决方案 »

  1.   


    select 采购单,采购单行,
         isnull(b.应付日期,a.应付日期) as 应付日期,
         isnull(b.应付金额,a.应付金额) as 应付金额
    from A left join B on a.采购单=b.采购单 and a.采购单行=b.采购单行
      

  2.   

    select A.采购单, A.采购单行
        , 应付日期=isnull(B.应付日期, A.应付日期)
        ,  应付金额=isnull(B.应付金额, A.应付金额)
        , 供应商--,...
    from A left join B on A.采购单=B.采购单 and A.采购单行=B.采购单行
      

  3.   

    少了别名:select a.采购单,a.采购单行,
         isnull(b.应付日期,a.应付日期) as 应付日期,
         isnull(b.应付金额,a.应付金额) as 应付金额
    from A left join B on a.采购单=b.采购单 and a.采购单行=b.采购单行
      

  4.   

    --表A中的采购单和采购单行 如果表B中不存在完整显示A中的字段 
    select * from a where 采购单行 not exists (select 1 from b where b.采购单 = a.采购单 and b.采购单行 = a.采购单行)--表A中的采购单和采购单行 如果表B中存在那么显示A中的字段是 应付日期和应付金额值为表B中的值 
    select a.采购单 , b.应付日期 , b.应付金额 , a.供应商 , a.条款 from a, b where a.采购单 = b.采购单 and a.采购单行 = b.采购单行--表A(一条)的数据表B(多条)中存在,显示多条表A记录并应付日期和应付金额值对应表B中的值 
    看不懂。
      

  5.   

    --表A中的采购单和采购单行 如果表B中不存在完整显示A中的字段 
    select * from a where not exists (select 1 from b where b.采购单 = a.采购单 and b.采购单行 = a.采购单行)--表A中的采购单和采购单行 如果表B中存在那么显示A中的字段是 应付日期和应付金额值为表B中的值 
    select a.采购单 , b.应付日期 , b.应付金额 , a.供应商 , a.条款 from a, b where a.采购单 = b.采购单 and a.采购单行 = b.采购单行--表A(一条)的数据表B(多条)中存在,显示多条表A记录并应付日期和应付金额值对应表B中的值 
    看不懂。
      

  6.   


    b.应付日期,a.应付日期和b.应付金额,a.应付金额都不为空呀,都是有值的.
      

  7.   


    我 说的这三种情况意思是在做是会出现这三种情况.做这个查询要考虑到这三种.并不是要三个语句.
    表A(一条)的数据表B(多条)中存在,显示多条表A记录并应付日期和应付金额值对应表B中的值 的意思是
    表A中没个采购单+采购单行不管有几条,如果在表B中有的话就显示表B中的金额日期,但表B中可能有多条,而A中只有一条.
    那么显示的条数要以B中的条数.
      

  8.   


    你的表中可能都是有值的,但A与B进行左外连接时,会在B中添加一些为空的行(与表A中的采购单和采购单行在B中不存在的记录匹配)