[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