表A (NO, 年度,所属CD)
表B (NO, 年度,所属CD, 中途退職日)
其中  NO  年度  所属CD都是两个表的主键,中途退職日不是主键现有数据
A:
 NO  年度  所属CD
-------------------------
1     2008   11
1     2008   12
1     2008   16
1     2008   19B:
 NO  年度  所属CD   中途退職日
-------------------------
1     2008   11     20080101
1     2008   12     20080101
1     2008   16
得出
写一语句得出
 NO  年度  所属CD   中途退職日
-------------------------
1     2008   11     20080101
1     2008   12     20080101
1     2008   16
这样的数据.
我写有语句:SELECT DISTINCT 
        A.所属CD,
A.年度 ,
A.NO,
        B.中途退職日
FROM A ,
     B    
WHERE TRIM(A.NO) = '1'
AND A.NO  =  B.NO 
AND A.年度= B.年度
AND A.所属CD= B.所属CD可是出来的结果不对...请大家帮忙.谢谢

解决方案 »

  1.   

    SELECT B.* FROM B
          LEFT JOIN A ON (B.NO, B.年度, B.所属CD) = (A.NO, A.年度, A.所属CD) AND TRIM(A.NO) = '1'
      

  2.   

    上面没有说明清楚,再说明一下问题
    有 
    表A (NO, 年度,所属CD,DD,CC,FF,GG,HH,KK) 
    表B (NO, 年度,所属CD, 中途退職日,11,22,33,44,55,66) 
    其中  NO  年度  所属CD都是两个表的主键,中途退職日不是主键 现有数据 
    A: 
    NO  年度  所属CD  DD CC FF  GG  HH  KK
    ------------------------- ------------------------- 
    1    2008  11    DD CC FF  GG  HH  KK
    1    2008  12 
    1    2008  16 
    1    2008  19 B: 
    NO  年度  所属CD  中途退職日  11  22 33  44  55  66
    ------------------------- ------------------------- 
    1    2008  11    20080101   11  22 33  44  55  66
    1    2008  12    20080101 
    1    2008  16 
    得出 
    写一语句得出 
    NO  年度  所属CD  中途退職日 
    ------------------------- 
    1    2008  11    20080101 
    1    2008  12    20080101 
    1    2008  16 
    这样的数据. 
    我写有语句: SELECT DISTINCT 
            A.所属CD, 
    A.年度 , 
    A.NO, 
            B.中途退職日 
    FROM A , 
        B    
    WHERE TRIM(A.NO) = '1' 
    AND A.NO  =  B.NO 
    AND A.年度= B.年度 
    AND A.所属CD= B.所属CD 可是出来的结果不对...请大家帮忙.谢谢 
      

  3.   

    上面没有说明清楚,再说明一下问题 
    有 
    表A (NO, 年度,所属CD,DD,CC,FF,GG,HH,KK) 
    表B (NO, 年度,所属CD, 中途退職日,11,22,33,44,55,66) 
    其中  NO  年度  所属CD都是两个表的主键,中途退職日不是主键 现有数据 
    A: 
    NO  年度  所属CD  DD CC FF  GG  HH  KK 
    ------------------------- ------------------------- 
    1    2008  11    dd CC FF  GG  HH  KK 
    1    2008  12    d1
    1    2008  16    
    1    2008  19 B: 
    NO  年度  所属CD  中途退職日  11  22 33  44  55  66 
    ------------------------- ------------------------- 
    1    2008  11    20080101  11  22 33  44  55  66 
    1    2008  12    20080101 
    1    2008  16 
    得出 
    写一语句得出 
    NO  年度  所属CD  中途退職日  DD
    ---------------------------- 
    1    2008  11    20080101   dd
    1    2008  12    20080101   d1
    1    2008  16 
    这样的数据. 
    我写有语句: SELECT DISTINCT 
            A.所属CD, 
    A.年度 , 
    A.NO, 
    A.DD, 
     B.中途退職日 
    FROM A , 
        B    
    WHERE TRIM(A.NO) = '1' 
    AND A.NO  =  B.NO 
    AND A.年度= B.年度 
    AND A.所属CD= B.所属CD 可是出来的结果不对...请大家帮忙.谢谢 
      

  4.   


    select B.NO,B.所属,B.年度,B.中途退职,A.DD
    FROM B
    INNER JOIN A ON A.NO=B.NO AND A.年度=B.年度 AND A.所属=B.所属
      

  5.   


    select B.NO,B.所属,B.年度,B.中途退职,A.DD
    FROM B,A
    where A.NO=B.NO AND A.年度=B.年度 AND A.所属=B.所属
      

  6.   

    不管了..他真实数据帖出来..先谢谢楼上大哥.表A----------------------------------------------
    年度 所属CD           NO        任用開始日        任用終了日
    2007 0000000029      1970029         20071101 20071130
    2008 0000000029      1970029         20071201 20080331
    2008 0000000029      1970029         20080401 20080531
    2008 0000000029      1970029         20080601 20080702表B
    年度 所属CD             NO       中途退職日
    2007 0000000029      1970029        
    2008 0000000029      1970029        
    2008 0000000029      1970029        
    2008 0000000029      1970029         20080607想得到所属CD      年度   任用開始日 任用終了日   中途退職日

    0000000029     2008   20080601  20080702    20080607
    0000000029     2008   20080401  20080531
    0000000029     2008   20071201  20080331   楼上大哥帮帮忙..谢谢
      

  7.   


    select a.所属CD,a.年度,a.任用開始日,a.任用終了日,b.中途退職日
    from a left join b on a.年度=b.年度 
    and a.所属CD=b.所属CD
    and a.NO=b.NO