Sql - Agrupar 2 subconsultas agrupadas??

18/02/2008

0

SQL

Olá a todos,

Tenho a seguinte situação:

Tenho 2 consultas SQL que estão unidas por UNION.
Porém, tenho que agrupar essas 2 consultas, que já são agrupadas.

Como faço isso? Agrupar 2 consultas?


Erucci

Erucci

Responder

Posts

19/02/2008

Djjunior

select a, b from 
(
(select a, b from tabA group by a, b)
union all
(select a, b from tabB group by a, b)
) ab
group by ab.a, ab.b 


qual a dificuldade ?


Responder

19/02/2008

Erucci

Então amigo, obrigado pela ajuda: Veja como está minha consulta SQL:

//-------------------------------------------------------------------------------
SELECT PlanodeContas.planoID, PlanodeContas.planoDescricao, Sum(Recibos.reciboValorPago) AS Total,´B´ AS Tipo, Count(Pagamentos.pagamentoID) AS Total2 FROM PlanodeContas INNER JOIN (Recibos INNER JOIN Pagamentos ON Recibos.pagamentoID = Pagamentos.pagamentoID) ON PlanodeContas.planoID = Pagamentos.planoID WHERE Recibos.pagamentoID<>0 AND Pagamentos.pagamentoExcluido=False AND Recibos.formaID in (1,3,4,5) AND Recibos.reciboData+Recibos.reciboHora Between #02/18/2008 16:49:49 And 02/19/2008 23:59:59
GROUP BY PlanodeContas.planoID, PlanodeContas.planoDescricao
UNION ALL
SELECT PlanodeContas.planoID, PlanodeContas.planoDescricao, Sum(ChequesEmitidos.chequeValor) AS Total, ´B´ AS Tipo, Count(Pagamentos.pagamentoID) AS Total2 FROM (PlanodeContas INNER JOIN (Recibos INNER JOIN Pagamentos ON Recibos.pagamentoID = Pagamentos.pagamentoID) ON PlanodeContas.planoID = Pagamentos.planoID) INNER JOIN ChequesEmitidos ON Pagamentos.pagamentoID = ChequesEmitidos.pagamentoID WHERE Recibos.pagamentoID<>0 AND Pagamentos.pagamentoExcluido=False
GROUP BY PlanodeContas.planoID, PlanodeContas.planoDescricao
UNION ALL
SELECT 0 AS planoID, ´RETIRADA DO CAIXA´ AS planoDescricao, Sum(CaixaMovimentos.movValor) AS Total, ´B´ AS Tipo, Count(CaixaMovimentos.movID) AS Total2 FROM CaixaMovimentos WHERE CaixaMovimentos.movTipo=´RETIRADA´ AND CaixaMovimentos.movData+CaixaMovimentos.movHora Between #02/18/2008 16:49:49 And 02/19/2008 23:59:59
GROUP BY 0, ´RETIRADA DO CAIXA´

//-------------------------------------------------------------------------------

Será que tenho que alterar minha consulta, colocando entre parênteses ou algo assim. Porque essa minha consulta acaba trazendo os dados assim


ALUGUEL 100,00
ALUGUEL 50,00

Só que quero que aparecça:
ALUGUEL 150,00

Fico agradecido se puder me ajudar!!

Abraços!!


Responder

21/02/2008

Erucci

Vamos lá pessoal,me ajuda ai
A consulta é essa:

[b:e4198f97b3]SELECT PlanodeContas.planoID, PlanodeContas.planoDescricao, Sum(Recibos.reciboValorPago) AS Total,´B´ AS Tipo, Count(Pagamentos.pagamentoID) AS Total2 FROM PlanodeContas INNER JOIN (Recibos INNER JOIN Pagamentos ON Recibos.pagamentoID = Pagamentos.pagamentoID) ON PlanodeContas.planoID = Pagamentos.planoID WHERE Recibos.pagamentoID<>0 AND Pagamentos.pagamentoExcluido=False AND Recibos.formaID in (1,3,4,5) AND Recibos.reciboData+Recibos.reciboHora Between #02/18/2008 16:49:49 And 02/19/2008 23:59:59
GROUP BY PlanodeContas.planoID, PlanodeContas.planoDescricao
UNION ALL
SELECT PlanodeContas.planoID, PlanodeContas.planoDescricao, Sum(ChequesEmitidos.chequeValor) AS Total, ´B´ AS Tipo, Count(Pagamentos.pagamentoID) AS Total2 FROM (PlanodeContas INNER JOIN (Recibos INNER JOIN Pagamentos ON Recibos.pagamentoID = Pagamentos.pagamentoID) ON PlanodeContas.planoID = Pagamentos.planoID) INNER JOIN ChequesEmitidos ON Pagamentos.pagamentoID = ChequesEmitidos.pagamentoID WHERE Recibos.pagamentoID<>0 AND Pagamentos.pagamentoExcluido=False
GROUP BY PlanodeContas.planoID, PlanodeContas.planoDescricao[/b:e4198f97b3]

Como faço para agrupar essas 2 consultas unidas com UNION?


Porque essa minha consulta acaba trazendo os dados assim


ALUGUEL 100,00
ALUGUEL 50,00

Só que quero que aparecça:
ALUGUEL 150,00

Fico agradecido se puder me ajudar!!

Abraços!!


Responder

21/02/2008

Paulo_amorim

Olá

Você poderia reagrupar sua query, refazendo o SELECT. Assim, seus montes de UNION viram uma ´tabela´.

SELECT SUM(<seu campo>) FROM (<seu select gigante>) GROUP BY(<seu critério>)


Não testei, mas deve funcionar.

Em tempo, queries não são parte do programa em si, mas ainda são blocos de código e merecem a tag de código

Espero que ajude.

Até+


Responder

APRENDA A PROGRAMAR DO ZERO AO PROFISSIONAL

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar