Sql - Agrupar 2 subconsultas agrupadas??
18/02/2008
0
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
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 ?
19/02/2008
Erucci
//-------------------------------------------------------------------------------
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!!
21/02/2008
Erucci
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!!
21/02/2008
Paulo_amorim
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é+
Clique aqui para fazer login e interagir na Comunidade :)