SELECT 
         TIRQSJ TIRQSJ,   
         TIZY TIZY,   
         TICARDNO TICARDNO,   
         TIKLB TIKLB, 
         TICOEQLB TICOEQLB,  
        '######' com_code,
         '#####' gz,
         '###' pp
    FROM TKT_INVJERZ   
WHERE tizy<>'S' and TIRQSJ >= TO_DATE('20110601','YYYYMMDD') AND
 TIRQSJ < TO_DATE('20110810','YYYYMMDD')+1 and 
 TIZY LIKE '%'  AND 
 TICARDNO LIKE '%' AND
 TICOEQLB LIKE '%'
 
 
  UNION  SELECT 
        a.TIRQSJ,
        a.tizy,
        a.ticardno,
        b.klb tiklb,
        a.ticoeqlb,
        a.com_code,
        a.gz,
        a.pp
 from
       (SELECT 
        a.rqsj TIRQSJ,
        'S' tizy,
        a.ZPNO ticardno,
        a.bank ticoeqlb,
        a.com_code com_code,
        a.gz gz,
        c.pp pp
        from INV_COM_PAY a,commod c 
        where length(zpno)=12 and rqsj >=to_date('20110101','yyyymmdd') and rqsj < to_date('20110810','yyyymmdd')+1 AND
         A.GZ LIKE '%' AND
        A.ZPNO LIKE '%'  and  
        A.BANK LIKE '%' AND
        C.PP LIKE '%' AND
        a.com_code = c.code )a,
        (select vpid,klb 
        from card_main where vpid like '%' and klb in ('02','00'))b
        where a.ticardno=b.vpid(+) 1,上面的那个SQL只查询tizy<>'S' 条件下的数据,tizy 有A,B,C....等可能。
2.下面的那个SQL上只果tizy='S'的数据,但下面条件中表内无tizy这个列。
3.ticardno卡号,在两个SQL中都有可能产生数据结果集合并。SQL有误,求教高手指点。

解决方案 »

  1.   

    SELECT 
             TIRQSJ TIRQSJ,   
             TIZY TIZY,   
             TICARDNO TICARDNO,   
             TIKLB TIKLB, 
             TICOEQLB TICOEQLB,  
            '######' com_code,
             '#####' gz,
             '###' pp
        FROM TKT_INVJERZ   
    WHERE tizy<>'S' and TIRQSJ >= TO_DATE('20110601','YYYYMMDD') AND
     TIRQSJ < TO_DATE('20110810','YYYYMMDD')+1 and 
     TIZY LIKE '%'  AND 
     TICARDNO LIKE '%' AND
     TICOEQLB LIKE '%'
     
     
      UNION  SELECT 
            a.TIRQSJ,
            a.tizy,
            a.ticardno,
            b.klb tiklb,
            a.ticoeqlb,
            a.com_code,
            a.gz,
            a.pp
     from
           (SELECT 
            a.rqsj TIRQSJ,
            'S' tizy,
            a.ZPNO ticardno,
            a.bank ticoeqlb,
            a.com_code com_code,
            a.gz gz,
            c.pp pp
            from INV_COM_PAY a,commod c 
            where length(zpno)=12 and rqsj >=to_date('20110101','yyyymmdd') and rqsj < to_date('20110810','yyyymmdd')+1 AND
             A.GZ LIKE '%' AND
            A.ZPNO LIKE '%'  and  
            A.BANK LIKE '%' AND
            C.PP LIKE '%' AND
            a.com_code = c.code ) a,---空格        (select vpid,klb 
            from card_main where vpid like '%' and klb in ('02','00')) b  ---空格        where a.ticardno=b.vpid(+)