Fórum Group by #347278

12/10/2007

0

Ola a todos, alguem sabe como dar um group by do resultado final (uniao de duas tabelas).

Exemplo:
select nome_classe,sum(valor) as total from caixa
group by nome_classe
union all
select nome_classe,sum(valor) as total from banco
group by nome_classe

[color=red:a7204ba9e3][b:a7204ba9e3]um group by dos dois select[/b:a7204ba9e3][/color:a7204ba9e3]

Desde ja muito obrigado

Luciano Ramos


Luciano.sul

Luciano.sul

Responder

Posts

13/10/2007

Luciano.sul

Se tiver outra maneira de fazer o que eu quero, sem usar o union me serve tambem

Desde ja muito obrigado

Luciano Ramos


Responder

Gostei + 0

13/10/2007

José Henrique

Luciano,
Você tentou usar só um group by no final para o sistema interpretar como se fosse do union (ou usar um terceiro também no final)?

Se não der certo você pode fazer em duas partes:
1 - fazer uma consulta union juntando as duas tabelas (caixa e banco)
select nome_classe, valor as total from caixa
union all
select nome_classe, valor as total from banco

2 - fazer uma consulta agregadora como a consulta resultante do item 1.
select nome_classe, sum(total) from cons_union
group by nome_classe


Responder

Gostei + 0

13/10/2007

Luciano.sul

[color=blue:600f478a4a]obrigadao pela tentativa mas nenhuma das dicas deu certo,
parece facil mas nao tem jeito.[/color:600f478a4a]

Novamente obrigado :oops:

Luciano Ramos


Responder

Gostei + 0

14/10/2007

Anonymous

Se não tem jeito mesmo...

select nome_classe,sum(valor) as total from caixa
group by nome_classe
union all
select nome_classe,sum(valor) as total from banco
group by nome_classe

para:

SELECT
NOME_CLASSE, SUM(TOTAL) AS TOTAL
FROM
(SELECT NOME_CLASSE, SUM(VALOR) AS TOTAL FROM CAIXA
UNION ALL
SELECT NOME_CLASSE, SUM(VALOR) AS TOTAL FROM BANCO
) TMPTABLE
GROUP BY
NOME_CLASSE


mas acho que a modelagem podia ser melhor desse banco... eu uso:

tabela ´bancos´
id, nome, saldoinicia, agencia... blah, blah... classe, centro de custo...
tabela filha ´contamovimento´
data, conciliado, valor, entrada/saida, blah. blah...

ou seja, quer um caixa? faz um banco chamando ´CAIXA´ e mexe como se fosse banco.,.. :) o relatorio financeiro sai normal...

:D boa sorte!


Responder

Gostei + 0

15/10/2007

Powerlog Tecnologia

Já tentou usar o ´número´ do campo?

Ex (não testei a select, fiz de cabeça agora):

Select razao as descricao, cnpj as identidade, sum(limite) as totli from fornecedores
union all
select nome as descricao, cpf as identidade, sum(limite) as totli from clientes
group by 2


No caso o [b:f0e420db52]´2´ [/b:f0e420db52] é o campo de agrupamento

Veja se ajuda


Responder

Gostei + 0

15/10/2007

Luciano.sul

[color=darkred:b75c8973da]visitante[/color:b75c8973da] :D

Obrigado pela ajuda mas tentei fazer o que tu me indicou e deu o seguinte erro:

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 4, char 2.
SELECT.

Testei no IBExpert

[color=darkred:b75c8973da]powerlog[/color:b75c8973da] :D

Tambem obrigado pela ajuda, só que nao deu certo, a instrucao sql me obriga a colocar o group by nos dois select

[color=red:b75c8973da]Pessoal [/color:b75c8973da] muito obrigado pelas tentativas mas uma coisa que parece ser tao facil e ao mesmo tempo ta muito dificil :oops:

Luciano Ramos :cry:


Responder

Gostei + 0

17/10/2007

Luciano.sul

Alguém se anima.... :lol:


Luciano Ramos


Responder

Gostei + 0

17/10/2007

Steve_narancic

Já tentou criar uma view e depois aplicar o group by no resultado desta view?


Responder

Gostei + 0

17/10/2007

Joaoshi

Colega, no Firebird 2.0 ou superior ficaria assim:

SELECT NOME_CLASSE,SUM(TOTAL) FROM
(
select nome_classe,valor as total from caixa
union all
select nome_classe,valor as total from banco
)
group by nome_classe

Espero ter ajudado.


Responder

Gostei + 0

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

Aceitar