none
SELECT com UNION RRS feed

  • Pergunta

  •  

    Estou com uma dúvida complexa. Tenho dois SELECT's cujos resultados estão unidos por uma cláusula UNION. Eu gostaria de agrupar os resultados das duas consultas e somar alguns deles. Se, por exemplo, o resultado da UNION fosse esse...

     

    ANDRÉ          27

    VANESSA     30

    ANDRÉ          10

     

    ... eu gostaria de agrupar os resultados, de modo que pudesse obter:

     

    ANDRÉ           37

    VANESSA      30

     

    Isso é possível?

    segunda-feira, 11 de junho de 2007 20:10

Todas as Respostas

  • Cara uma coisa que você pode fazer é colocar esses resultados em uma View... e depois fazer um select sum() com group by.

     

    Code Snippet

    SELECT SUM(valor) FROM vwSuaView GROUP BY Nome

     

    Espero ter ajudado.

    Forte abraço.

    segunda-feira, 11 de junho de 2007 21:00
  • Oi.

     

         Talvez nossos colegas tenham uma solução mais bonita mas você pode fazer isso criando um SELECT por sobre essa query. Algo mais ou menos assim:

     

    Code Snippet

         SELECT U.NOME, U.SUM(COLUNA_VALOR) AS VALOR_AGREGADO

         FROM (

             SELECT NOME, COLUNA_VALOR FROM TABELA

             UNION

             SELECT NOME, COLUNA_VALOR FROM TABELA ) AS U

        GROUP BY

              U.NOME

     

     

     

         Você poderia também transformar o seu SELECT com Union numa view e criar um SELECT em cima dessa view.

     

         Boa sorte com suas queries.

     

    Abraço.

    • Sugerido como Resposta ClodoaldoPereira segunda-feira, 16 de agosto de 2010 14:40
    segunda-feira, 11 de junho de 2007 21:02
  • Bom dia André

     

    Uma boa solução tb, poderia ser a criação de uma view ou Function

     

     

     

     

     

     

    Espero ter ajudado

    terça-feira, 12 de junho de 2007 10:58
  • André,

     

    Outra possibilidade que poderia ser utilizada também seria tabelas temporárias, e nesta table você também poderá fazer os cálculos.

    terça-feira, 12 de junho de 2007 11:35
  • Colegas,

     

    As propostas são excelentes. A idéia da view, por exemplo, é muito boa, mas eu não posso usar uma. A query em questão cria e preenche uma tabela que serve de base para um relatório construído no Crystal 8.5. Eu queria muito poder basear esse relatório em uma view, mas as stored procedures que deveriam atualizar essa view não aceitam comandos de DDL, como CREATE, ALTER e DROP. Assim, eu tenho que fazer essa gambiarra pra conseguir um sistema de relatórios independente do executável da minha aplicação.

     

    O Eduardo mostrou uma idéia que é realmente o que eu queria aprender: aplicar um SELECT sobre dois selects com UNION. Eu acabei não precisando utilizar esse recurso porque lancei mão dos agrupamentos do Crystal para resolver meu problema, mas o conhecimento vai ficar guardado para ser explorado em outras ocasiões.

     

    Se alguém quiser discutir a questão dos relatórios com views no Crystal, a sessão está aberta.

     

    Muito obrigado a todos!

    terça-feira, 12 de junho de 2007 14:44