GARANTIR DESCONTO

Fórum Ajuda em SQL Group By #273671

22/03/2005

0

Pessoal tenho uma Tabela com a seguinte estrutura:

CodHistorico, depto, Valor preciso fazer um group By que some o campo valor de todos os codhistorico iguais sei que não posso dar um select * e agrupar por um campo só por Ex. não posso fazer isso:

Select *
from Lancamento
Group By CodHistorico

Como poderia fazer isso??


Ariovaldo

Ariovaldo

Responder

Posts

22/03/2005

Faelcavalcanti

Pessoal tenho uma Tabela com a seguinte estrutura: CodHistorico, depto, Valor preciso fazer um group By que some o campo valor de todos os codhistorico iguais sei que não posso dar um select * e agrupar por um campo só por Ex. não posso fazer isso: Select * from Lancamento Group By CodHistorico Como poderia fazer isso??


Cara é o seguinte o problema é o tal do [b:7356543b9e]*[/b:7356543b9e]. Acho que não têm jeito você terá que especificar todos os campos no [b:7356543b9e]Select[/b:7356543b9e] ou apenas o [b:7356543b9e]CodHistorico[/b:7356543b9e]. Tipow:
SELECT CODHISTORICO FROM LANCAMENTO GROUP BY CODHISTORICO

ou
SELECT CODHISTORICO, NOMECAMPO1, NOMECAMPO2, ..... FROM LANCAMENTO GROUP BY CODHISTORICO


:wink:
Falow!


Responder

Gostei + 0

22/03/2005

Ariovaldo

Realmente, mesmo especificando todos os campos no Select ele não aceita agrupar por apenas um, qual seria a solução para este caso?


Responder

Gostei + 0

22/03/2005

Marcio.theis

Ou você faz:

SELECT CODHISTORICO FROM LANCAMENTO GROUP BY CODHISTORICO

ou

SELECT CODHISTORICO, NOMECAMPO1, NOMECAMPO2
FROM LANCAMENTO
GROUP BY CODHISTORICO, NOMECAMPO1, NOMECAMPO2


Responder

Gostei + 0

22/03/2005

Faelcavalcanti

Realmente, mesmo especificando todos os campos no Select ele não aceita agrupar por apenas um, qual seria a solução para este caso?


Cara, acho que me expressei errado, mais para cada campo individualizado no Select, terá que ser especificado no [b:752d44fade]Group by[/b:752d44fade] sacow, ou seja, para cada campo no Select você colocará no Group By.

Mas se for o caso de você quiser especificar uma função tipow SUM(Valor) da tabela de Lancamentos, não precisará especificar no Group By.

Espero que tenha conseguido!!!!!

:wink:
Falow!


Responder

Gostei + 0

22/03/2005

Kotho

O GROUP BY é utlizado quando queremos agrupar registros (como você disse, somando-se algum campo)... isto fará que, ao invés de retornar 10 registros (por exemplo), retornará 3... para o banco fazer isso, ele precisará saber quais os campos serão unificados. Quando fazemos:

SELECT CDHISTORICO, SUM(VALOR) AS SOMA
FROM LANCAMENTO
GROUP BY CDHISTORICO

estamos dizendo ao banco para agrupar os historicos (isto quer dizer que a quantidade de historicos diferentes será a quantidade de registros) e somar esse agrupamento em SOMA.

Se precisarmos agrupar mais um campo juntamente com CDHISTORICO, devemos fazer:

SELECT CDHISTORICO, NOMECAMPO1, SUM(VALOR) AS SOMA
FROM LANCAMENTO
GROUP BY CDHISTORICO, NOMECAMPO1

Nesse caso, a combinação de CDHISTORICO e NOMECAMPO1 é que determinará a quantidade de registros.

Espero ter sido claro.


Responder

Gostei + 0

22/03/2005

Ariovaldo

Pessoal ainda não resolvi e nem sei como resolver e pelo que estou vendo vai ser dificil, porque por exemplo como vou mostrar a Soma de cada Departamento se tenho várias vezes na tabela o mesmo departamento com valores diferente


Responder

Gostei + 0

22/03/2005

Faelcavalcanti

Cara. Não sei porque insiste tantos com o Group By, você deve utilizar o [b:368a16ff7f]Where[/b:368a16ff7f] como o seu caso para vários departamentos, depois você se preocupa como estes dados serão visualizados. Estais utilizando isto para relatório ??? Mas olha só coloca um exemplo de mapeamento de como estão as tabelas do teu banco para agente te dar uma explanação maior sobre como você possa proceder.

Falow!


Responder

Gostei + 0

23/03/2005

Emerson Nascimento

se vc quer o valor por departamento:
select depto, sum(valor) valortotal 
from Lancamento 
group by depto


se vc quer por departamento e histórico:
select depto, codhistorico, sum(valor) valortotal 
from Lancamento 
group by depto, codhistorico



Responder

Gostei + 0

28/03/2005

Ariovaldo

Pessoal segue a minha estrutura de Tabelas e o que preciso que seja impresso:

Tabela Lancamento
Li_IDLancamento, DT_DataLancamento
PK = Li_IDLancamento

ItemLancamento
Li_IDLancamento, Li_IDItemLancamento, CodDepto, Valor
PK = Li_IDItemLancamento

POis bem agora preciso montar um relatório mostrando a soma total do Campo Valor para cada CodDepto e que esteja dentro de um intervalo de data ou seja seria algo assim:
[b:4a9135b79e]Select Lancamento.DT_DataLancamento,
ItemLancamento.CodDepto, Sum(ItemLancamento.Valor)
Left Join ItemLancamento on(Lancamento.Li_idLancamento = ItemLancamento.Li_idLancamento
Where DT_DataLancamento Between DataInicial And DataFinal
Group By ItemLancamento.CodDepto[/b:4a9135b79e]

POrém como já foi discutido isso não funciona


Responder

Gostei + 0

28/03/2005

Kotho

O campo Lancamento.DT_DataLancamento deve estar no Group By, pois ele também deverá ser agrupado...

Select Lancamento.DT_DataLancamento,
ItemLancamento.CodDepto, Sum(ItemLancamento.Valor)
Left Join ItemLancamento on(Lancamento.Li_idLancamento = ItemLancamento.Li_idLancamento
Where DT_DataLancamento Between DataInicial And DataFinal
Group By Lancamento.DT_DataLancamento, ItemLancamento.CodDepto


Responder

Gostei + 0

28/03/2005

Emerson Nascimento

colega, que banco de dados você está utilizando? a construção abaixo funciona no Interbase, Firebird e SQL Server.

Select ItemLancamento.CodDepto, Sum(ItemLancamento.Valor) ValorTotal
from Lancamento
Left Join ItemLancamento on (ItemLancamento.Li_idLancamento=Lancamento.Li_idLancamento)
Where Lancamento.DT_DataLancamento Between :DataInicial And :DataFinal
Group By ItemLancamento.CodDepto


se quiser agupar por data e departamento:
Select Lancamento.DT_DataLancamento, ItemLancamento.CodDepto, Sum(ItemLancamento.Valor) ValorTotal
from Lancamento
Left Join ItemLancamento on (ItemLancamento.Li_idLancamento=Lancamento.Li_idLancamento)
Where Lancamento.DT_DataLancamento Between :DataInicial And :DataFinal
Group By Lancamento.DT_DataLancamento, ItemLancamento.CodDepto



Responder

Gostei + 0

28/03/2005

Faelcavalcanti

Cara. Têm alguma coisa de errado com o teu código ou talvez configurações do teu relatório. O que de fato não funciona ??? O relatório fica em branco, acontece um erro, os valores dos parâmetros estão vazios ???

:lol: :lol: :lol:
O que o [b:68acc9820a]emerson.en[/b:68acc9820a] falow, tá valendo, mas pelo menos nos dê uma pista melhor !!!!


Responder

Gostei + 0

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

Aceitar