[firebase-br] SELECT COM UNION

Marco Antonio Albuquerque marcksystem em hotmail.com
Sáb Abr 28 17:16:28 -03 2007


Boa tarde colegas,
                        será que alguem poderia me ajudar num select meio 
complicado? Acontece o seguinte, tenho um select de uma tabela A com union 
em outra B em ambas tenho uma condição case que faz um subselect em diversas 
tabelas. Se rodo separado do union as duas funcionam bem, porém com a junção 
UNION da erro de Data type unknown. Tentei resolver isso usando cast nos 
possíveis campos porém não deu certo. Alguém teria alguma idéia

Abaixo o monstruoso select

Obrigado

SELECT cons.ID_CAD001,  fil.C01_RAZAOSOCIAL, conv.C05_RAZAOSOCIAL,  
cons.REG_ANS  ,
           cons.DT_ATENDIMENTO,  cons.ID_GUIA,  cons.DT_EMISSAO,  
cons.ID_CAD006,
           pac.C06_NOME, cons.ID_CAD005, cons.ID_CAD003 CRM,
           CAST(cons.ID_TABELA AS INTEGER) ID_TABELA,
           CASE ID_TABELA
               WHEN '01' THEN (SELECT DISTINCT (G01_DESCRICAO) FROM TBGEN001
                                         WHERE CAST(TBGEN001.G01_CODIGO  AS 
VARCHAR(10)) =
                                                    
CAST(ANSGUI01.COD_PROCEDIMENTO AS VARCHAR(10))
                                             AND TBGEN001.G01_ANO = 1990
                                             AND TBGEN001.G01_CODESPEC = 
ANSGUI01.ID_TAB001)
               WHEN '02' THEN (SELECT DISTINCT (G01_DESCRICAO) FROM TBGEN001
                                         WHERE CAST(TBGEN001.G01_CODIGO  AS 
VARCHAR(10)) =
                                                    
CAST(ANSGUI01.COD_PROCEDIMENTO AS VARCHAR(10))
                                              AND TBGEN001.G01_ANO = 1992
                                              AND TBGEN001.G01_CODESPEC = 
ANSGUI01.ID_TAB001)
           END AS DESCRICAO, cons.COD_PROCEDIMENTO,
       COALESCE(cons.ID_TAB001, 0) ID_TAB001, CAST(cons.SITUACAO AS CHAR(2)) 
SITUACAO,
       COALESCE(cons.VALOR, 0) VALOR, pla.C11_DESCRICAO
  FROM ANSGUI01 cons, TBCAD001 fil, TBCAD005 conv, TBCAD006 pac, TBCAD007 
par,
          TBCAD011 pla
   WHERE cons.ID_CAD001 = fil.ID_CAD001
       AND cons.ID_CAD005 = conv.ID_CAD005
       AND cons.ID_CAD006 = pac.ID_CAD006
       AND pac.ID_CAD006 = par.ID_CAD006
       AND par.ID_CAD005 = pla.ID_CAD005
       AND par.ID_CAD011 = pla.ID_CAD011
UNION ALL
SELECT s.ID_CAD001, f.C01_RAZAOSOCIAL, conv.C05_RAZAOSOCIAL, s.REG_ANS,
             r.DT_REALIZACAO DT_ATENDIMENTO, s.ID_GUIA, s.DT_EMISSAO, 
s.ID_CAD006,
             pac.C06_NOME,  s.ID_CAD005,  s.ID_CAD003_EXEC CRM,
            CAST(r.COD_TABELA AS INTEGER) ID_TABELA,
            CASE r.COD_TABELA
                   WHEN '04' THEN (SELECT TBGEN002.G02_DESCRICAO
                                               FROM TBGEN002
                                           WHERE TBGEN002.G02_COD_APRES = 
ANSGUI03.BRAS_COD_APRES
                                              AND TBGEN002.G02_COD_LABOR = 
ANSGUI03.BRAS_COD_LABOR
                                              AND CAST(TBGEN002.G02_CODIGO 
AS VARCHAR(10))  =
                                                     
CAST(ANSGUI03.COD_PROCEDIMENTO AS VARCHAR(10)))
                   WHEN '10' THEN (SELECT TBGEN004.G04_DESCRICAO
                                               FROM TBGEN004
                                             WHERE CAST(TBGEN004.G04_CODIGO 
AS VARCHAR(10)) =
                                                        
CAST(ANSGUI03.COD_PROCEDIMENTO AS VARCHAR(10)))
            END AS DESCRICAO,  r.COD_PROCEDIMENTO, COALESCE(s.ID_TAB001, 0 ) 
ID_TAB001,
            CAST(SITUACAO AS CHAR(2)) SITUACAO,  COALESCE(s.VLR_TOT_GUIA, 0) 
VALOR,
            pla.C11_DESCRICAO
            FROM ANSGUI02 s, TBCAD001 f, ANSGUI03 r, TBCAD005 conv, TBCAD006 
pac,
           TBCAD007 par, TBCAD011 pla
    WHERE f.ID_CAD001 = s.ID_CAD001
         AND s.ID_GUIA = r.ID_GUIA02
         AND s.ID_CAD005 = conv.ID_CAD005
         AND s.ID_CAD006 = pac.ID_CAD006
         AND pac.ID_CAD006 = par.ID_CAD006
         AND par.ID_CAD005 = pla.ID_CAD005
         AND par.ID_CAD011 = pla.ID_CAD011;

_________________________________________________________________
Descubra como mandar Torpedos do Messenger para o celular! 
http://mobile.msn.com/





Mais detalhes sobre a lista de discussão lista