Kátia, Não entendi direito o que você está considerando resultado errado, mas posso dizer que o UNION retornar linhas distintas das duas querys, como se fizesse um distinct de todos os campos. Por exemplo, se rodar a seguinte query só retornará um valor:
SELECT 'TESTE' FROM DUAL UNION SELECT 'TESTE' FROM DUAL; Retornará apenas um registro 'TESTE' se quiser os dois terá que usar UNION ALL. Espero que ter ajudado. Abs, Murilo Kátia Claro escreveu: >Pessoal, quando eu rodo este select: > >SELECT SELC.CAMPO_1, SELC.CAMPO_2, >SUM(NVL(SELC.FATURAMENTO, 0)) FATURAMENTO, >SUM(SELC.ORCADO) ORCADO, >NVL(F_VAR_ATUAL(SUM(NVL(SELC.FATURAMENTO, 0)), SUM(SELC.ORCADO)),0) VAR_ATUAL, >SUM(NVL(SELC.ANO_ANTERIOR, 0)) ANO_ANTERIOR, >NVL(F_VAR_ATUAL(SUM(SELC.FATURAMENTO), SUM(NVL(SELC.ANO_ANTERIOR, 0))),0) >VAR_ANTERIOR >FROM ( >SELECT U.UNI_NOME CAMPO_1, F_CONTATOS_CATEGORIA(CP.CTP_CODIGO, >TO_DATE('062005', 'MMYYYY'), TO_DATE('062005', 'MMYYYY')) CAMPO_2, >U.UNI_CODIGO CAMPO_3, NULL CAMPO_4, NVL(F_VALORCADO('062005', '062005', >U.UNI_CODIGO, G.GNP_CODIGO, CP.CTP_CODIGO, 'U.UNI_CODIGO', 'G.GNP_CODIGO', >'CP.CTP_CODIGO'), 0) ORCADO, TO_NUMBER(NULL) FATURAMENTO, TO_NUMBER(NULL) >ANO_ANTERIOR >FROM CONTRATO C, UNI_NEGOCIO U, PROPRIEDADE P, PROGRAMA PG, GEN_PROGRAMA G, >CONTRATO_CATPROD CCP, CAT_PRODUTO CP , >ORC_RECEITACAT ORC, ORC_RECEITAGEN ORG >WHERE U.UNI_CODIGO = C.UNI_CODIGO AND P.PRP_CODIGO = C.PRP_CODIGO AND >PG.PRG_CODIGO = P.PRG_CODIGO AND CCP.CTR_CODIGO = C.CTR_CODIGO >AND ORG.UNI_CODIGO = C.UNI_CODIGO AND ORG.GNP_CODIGO = G.GNP_CODIGO AND >ORC.UNI_CODIGO = C.UNI_CODIGO AND ORG.ORG_ANO = '2005' >AND ORC.ORC_ANO = '2005' AND (( ORC.ORC_JUN <> 0) AND ( ORG.ORG_JUN <> 0)) >AND ((ORC.CTP_CODIGO = CCP.CTP_CODIGO AND CP.CTP_CODIGO = CCP.CTP_CODIGO) OR >(CP.CTP_CODIGO = ORC.CTP_CODIGO AND ( ORC.ORC_JUN <> 0 AND ORG.ORG_JUN <> 0))) >GROUP BY U.UNI_NOME, NULL, U.UNI_CODIGO, G.GNP_CODIGO, CP.CTP_CODIGO >) SELC >GROUP BY SELC.CAMPO_1, SELC.CAMPO_2, SELC.CAMPO_3, SELC.CAMPO_4 >ORDER BY SELC.CAMPO_1, SELC.CAMPO_2, SELC.CAMPO_3, SELC.CAMPO_4 > > > >Tenho o seguinte resultado para o campo orçado: > >42021 >331513,5 >61465,5 >327460 > > estes resultados estão certos, mas quando eu coloco mais dois selects usando > o "UNION" > >SELECT SELC.CAMPO_1, SELC.CAMPO_2, > SUM(NVL(SELC.FATURAMENTO, 0)) FATURAMENTO, > SUM(SELC.ORCADO) ORCADO, > NVL(F_VAR_ATUAL(SUM(NVL(SELC.FATURAMENTO, 0)), SUM(SELC.ORCADO)),0) > VAR_ATUAL, > SUM(NVL(SELC.ANO_ANTERIOR, 0)) ANO_ANTERIOR, > NVL(F_VAR_ATUAL(SUM(SELC.FATURAMENTO), SUM(NVL(SELC.ANO_ANTERIOR, > 0))),0) VAR_ANTERIOR >FROM ( SELECT U.UNI_NOME CAMPO_1, F_CONTATOS_CATEGORIA(CP.CTP_CODIGO, >H.HTP_DTVENC, H.HTP_DTVENC) CAMPO_2, U.UNI_CODIGO CAMPO_3, NULL CAMPO_4, 0 >ORCADO, SUM(H.HTP_VLFATURADO) FATURAMENTO, TO_NUMBER(NULL) ANO_ANTERIOR > FROM HIS_PAGAMENTO H, CONTRATO C, UNI_NEGOCIO U, PROPRIEDADE P, > PROGRAMA PG, GEN_PROGRAMA G , CAT_PRODUTO CP, CONTRATO_CATPROD CCP > WHERE C.CTR_CODIGO = H.CTR_CODIGO AND U.UNI_CODIGO = C.UNI_CODIGO AND > P.PRP_CODIGO = C.PRP_CODIGO > AND P.PRG_CODIGO = PG.PRG_CODIGO AND PG.GNP_CODIGO = G.GNP_CODIGO AND > CCP.CTR_CODIGO = C.CTR_CODIGO > AND CP.CTP_CODIGO = CCP.CTP_CODIGO > AND TO_CHAR(H.HTP_DTVENC, 'MMYYYY') = '062005' AND H.HTP_FATURADO = 'S' > GROUP BY U.UNI_NOME, F_CONTATOS_CATEGORIA(CP.CTP_CODIGO, H.HTP_DTVENC, > H.HTP_DTVENC), U.UNI_CODIGO, NULL > UNION > SELECT U.UNI_NOME CAMPO_1, F_CONTATOS_CATEGORIA(CP.CTP_CODIGO, > H.HTP_DTVENC, H.HTP_DTVENC) CAMPO_2, U.UNI_CODIGO CAMPO_3, NULL > CAMPO_4, 0 ORCADO, TO_NUMBER(NULL) FATURAMENTO, > SUM(H.HTP_VLFATURADO) ANO_ANTERIO > FROM HIS_PAGAMENTO H, CONTRATO C, UNI_NEGOCIO U, PROPRIEDADE P, > PROGRAMA PG, GEN_PROGRAMA G , CONTRATO_CATPROD CCP, CAT_PRODUTO CP > WHERE C.CTR_CODIGO = H.CTR_CODIGO AND U.UNI_CODIGO = C.UNI_CODIGO AND > P.PRP_CODIGO = C.PRP_CODIGO > AND P.PRG_CODIGO = PG.PRG_CODIGO AND PG.GNP_CODIGO = G.GNP_CODIGO AND > CCP.CTR_CODIGO = C.CTR_CODIGO > AND CP.CTP_CODIGO = CCP.CTP_CODIGO > AND TO_CHAR(H.HTP_DTVENC, 'MMYYYY') = '062004' AND H.HTP_FATURADO = 'S' > GROUP BY U.UNI_NOME, F_CONTATOS_CATEGORIA(CP.CTP_CODIGO, H.HTP_DTVENC, > H.HTP_DTVENC), U.UNI_CODIGO, NULL > UNION > SELECT U.UNI_NOME CAMPO_1, F_CONTATOS_CATEGORIA(CP.CTP_CODIGO, > TO_DATE('062005', 'MMYYYY'), TO_DATE('062005', 'MMYYYY')) CAMPO_2, > U.UNI_CODIGO CAMPO_3, NULL CAMPO_4, NVL(F_VALORCADO('062005', > '062005', U.UNI_CODIGO, G.GNP_CODIGO, CP.CTP_CODIGO, 'U.UNI_CODIGO', > 'G.GNP_CODIGO', 'CP.CTP_CODIGO'), 0) ORCADO, TO_NUMBER(NULL) FATURAMENTO, > TO_NUMBER(NULL) ANO_ANTERIOR > FROM CONTRATO C, UNI_NEGOCIO U, PROPRIEDADE P, PROGRAMA PG, > GEN_PROGRAMA G, CONTRATO_CATPROD CCP, CAT_PRODUTO CP , > ORC_RECEITACAT ORC, ORC_RECEITAGEN ORG > WHERE U.UNI_CODIGO = C.UNI_CODIGO AND P.PRP_CODIGO = C.PRP_CODIGO AND > PG.PRG_CODIGO = P.PRG_CODIGO AND CCP.CTR_CODIGO = C.CTR_CODIGO > AND ORG.UNI_CODIGO = C.UNI_CODIGO AND ORG.GNP_CODIGO = G.GNP_CODIGO AND > ORC.UNI_CODIGO = C.UNI_CODIGO AND ORG.ORG_ANO = '2005' > AND ORC.ORC_ANO = '2005' AND (( ORC.ORC_JUN <> 0) AND ( ORG.ORG_JUN <> > 0)) > AND ((ORC.CTP_CODIGO = CCP.CTP_CODIGO AND CP.CTP_CODIGO = > CCP.CTP_CODIGO) OR (CP.CTP_CODIGO = ORC.CTP_CODIGO AND ( ORC.ORC_JUN <> 0 AND > ORG.ORG_JUN <> 0))) > GROUP BY U.UNI_NOME, NULL, U.UNI_CODIGO, G.GNP_CODIGO, CP.CTP_CODIGO > ) SELC >GROUP BY SELC.CAMPO_1, SELC.CAMPO_2, SELC.CAMPO_3, SELC.CAMPO_4 >ORDER BY SELC.CAMPO_1, SELC.CAMPO_2, SELC.CAMPO_3, SELC.CAMPO_4 > >O resultado no meu campo orçado muda para: > >0 >38541 >331513,5 >61465,5 >327460 > >Olha já estou ficando doidinha com este select, mas não consegui descobrir o >que pode ser, alguém tem alguma luz? > >obrigada > >Kátia Claro > > >[As partes desta mensagem que não continham texto foram removidas] > > > >______________________________________________________________________ > >Cancelar assinatura...: [EMAIL PROTECTED] >Moderadores da lista....:Dorian Anderson Soutto [EMAIL PROTECTED] >Fernanda Damous [EMAIL PROTECTED] >Alisson Aguiar [EMAIL PROTECTED] >______________________________________________________________________ >http://br.groups.yahoo.com/group/oracle_br/ >______________________________________________________________________ > >Sair da Lista...: [EMAIL PROTECTED] >Links do Yahoo! Grupos > > > > > > > > > > > ______________________________________________________________________ Cancelar assinatura...: [EMAIL PROTECTED] Moderadores da lista....:Dorian Anderson Soutto [EMAIL PROTECTED] Fernanda Damous [EMAIL PROTECTED] Alisson Aguiar [EMAIL PROTECTED] ______________________________________________________________________ http://br.groups.yahoo.com/group/oracle_br/ ______________________________________________________________________ Sair da Lista...: [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html