Sql - Agrupar 2 subconsultas agrupadas??

SQL

18/02/2008

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

Curtidas 0

Respostas

Djjunior

Djjunior

18/02/2008

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 ?


GOSTEI 0
Erucci

Erucci

18/02/2008

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!!


GOSTEI 0
Erucci

Erucci

18/02/2008

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!!


GOSTEI 0
Paulo_amorim

Paulo_amorim

18/02/2008

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é+


GOSTEI 0
POSTAR