Group by
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
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
Curtidas 0
Respostas
Luciano.sul
12/10/2007
Se tiver outra maneira de fazer o que eu quero, sem usar o union me serve tambem
Desde ja muito obrigado
Luciano Ramos
Desde ja muito obrigado
Luciano Ramos
GOSTEI 0
José Henrique
12/10/2007
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
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
GOSTEI 0
Luciano.sul
12/10/2007
[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
parece facil mas nao tem jeito.[/color:600f478a4a]
Novamente obrigado :oops:
Luciano Ramos
GOSTEI 0
Anonymous
12/10/2007
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!
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!
GOSTEI 0
Powerlog Tecnologia
12/10/2007
Já tentou usar o ´número´ do campo?
Ex (não testei a select, fiz de cabeça agora):
No caso o [b:f0e420db52]´2´ [/b:f0e420db52] é o campo de agrupamento
Veja se ajuda
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
GOSTEI 0
Luciano.sul
12/10/2007
[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:
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:
GOSTEI 0
Luciano.sul
12/10/2007
Alguém se anima.... :lol:
Luciano Ramos
Luciano Ramos
GOSTEI 0
Steve_narancic
12/10/2007
Já tentou criar uma view e depois aplicar o group by no resultado desta view?
GOSTEI 0
Joaoshi
12/10/2007
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.
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.
GOSTEI 0