表a,字段:code,mend (即材料代码,月末数)
          0001  20
          0002  30
          0005  40
表b,字段:code,min  (即材料代码,月入数)
          0001  4
          0008  6
          
我想得到:
          0001  20  4
          0002  30  0
          0005  40  0
          0008  0   6

解决方案 »

  1.   

    select a.code ,a.mend ,b.min from a left outer join b on a.code=b.code
      

  2.   

    对不起,我上面看错了,应该这样
    select a.code ,a.mend ,b.min from a full outer join b on a.code=b.code
      

  3.   

    select a.code,a.mend, b.min from a,b
    where a.code=b.code
      

  4.   

    select a.code,a.mend,b.mmin
    From a full join b on a.code=b.code
      

  5.   

    select a.code,a.mend, b.min 
    from a,b
    where a.code=b.code
      

  6.   

    1、要实现你的功能,还需要一个表C:code,mend ,min  
    2、将表a所有记录加入表,初始化min值为0
    3、Loop表b所有的记录,查看是否在表c存在这样的记录
       如果存在修改min的值
       如果不存在add记录
      

  7.   

    SELECT a.code, a.mend, b.min
    FROM a LEFT JOIN
          b ON a.code = b.code
    UNION
    SELECT b.code, a.mend, b.min
    FROM b LEFT JOIN
          a ON a.code = b.code
      

  8.   

    SELECT a.code, a.mend, b.mind
    FROM a LEFT JOIN
          b ON a.code = b.code
    UNION
    SELECT b.code, a.mend, b.mind
    FROM b LEFT JOIN
          a ON a.code = b.code
    ORDER BY 1
      

  9.   

    同意 zzlingaaa(想不到好名字)
      

  10.   

    楼上的都是想当然得出的结论,正确应该如下:
    select a.code ,IsNull(a.mend,0) ,IsNull(b.min,0) from a Left outer join b on a.code=b.code 
       union select b.code ,IsNull(a.mend,0) ,IsNull(b.min,0) from a right outer join b on a.code=b.code 
    注,在Sql Server下如此,如果是其他数据库你把IsNull函数去掉就是了!
      

  11.   

    不好意思,回答前还没有看到 zzlingaaa(想不到好名字) 的回答:)
      

  12.   

    select a.zd,b.zd from b1 inner join b2 on a.zd=b.zd where tj
      

  13.   

    真的是不好意思,我照抄dulei115() 的答案,在查询分析器里验证了一下而已.
    然后加了一点谁都知道加的东西~
    惭愧啊惭愧~
      

  14.   

    select c.code ,c.mend ,d.min from a c left join b d on c.code=d.code
      

  15.   

    select x.code,x.mend,y.min from a x,b,y where x.code=y.code
      

  16.   

    select a.code ,case when a.mend is null then 0 else a。mend end mend,case when b.min is null then 0 else b。min end min from a left join b on a.code=b.code
      

  17.   

    上面的我没有测
    应该用case when 可以实现吧
      

  18.   

    SELECT a.code, a.mend, b.min
    FROM a LEFT JOIN
          b ON a.code = b.code
    UNION
    SELECT b.code, a.mend, b.min
    FROM b LEFT JOIN
          a ON a.code = b.code
    ORDER BY 1
    是对的
    我测试过
      

  19.   

    select code,sum(mend) as mend,sum(min) as min from
    (select code ,0 as min,mend from a
    union
    select code,min ,0 as mend from b
    ) tmp
    group by code
    所有代码的记录均会查出来.
      

  20.   

    SELECT a.code, a.mend, b.min
    FROM a LEFT JOIN
          b ON a.code = b.code
    UNION
    SELECT b.code, a.mend, b.min
    FROM b LEFT JOIN
          a ON a.code = b.code
    我试了一下,没有出现0
    而是变成空格
      

  21.   

    在oracle中,下面的語句是一定可以成功的,
    我自己在我的oracle上調試過select a.code,a.mend,b.min from a,b where a.code=b.code
    union
    select code,'0',bin from b where code not in (select code from a)union蹤向相加表紀錄,不過紀錄類型相互對應要同樣類型a.mend 試varchar2, '0'
    必須是string.一定可以的
      

  22.   

    SELECT [a].[code], [a].[mend], IIF(ISNULL([b].[min]),0,b.min)
    FROM a left JOIN b ON [a].[code]=[b].[code]
    UNION SELECT [b].[code], IIF(ISNULL([a].[mend]),0,a.mend), [b].[min]
    FROM a right JOIN b ON [a].[code]=[b].[code];
      

  23.   

    在Access中可以这样写:select a.code ,Nz(a.mend,0) As Mend ,Nz(b.min,0) as Min from a Left outer join b on a.code=b.code 
       UNION select b.code ,Nz(a.mend,0) as Mend ,Nz(b.min) as Min  from a right outer join b on a.code=b.code;