Inquiridor
SELECT com UNION

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?
Todas as Respostas
-
-
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 SnippetSELECT 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
-
-
-
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!