PROBLEMA COM GROUP BY
Olá Pessoal
Estou começando a aprender o SQL e não estou conseguindo fazer uma coisa aparentemente simples. Pelo que li, tenho que usar Group by para realizar o que quero, mas vamos lá:
Tenho uma tabela no Access chamada Despesas onde existem as colunas Tipo, ValorDespesa, ValorPago, VeicDes.
Em uma outra tabela, Tipo de Despesas, tenho a descrição da despesa na coluna DescDesp.
O que eu quero fazer é um select que produza o resultado abaixo agrupado por tipo:
Tipo - Descrição da Despesa - Valor Despesa - Valor Pago
O que eu não consigo fazer é colocar a descrição da despesa (tentei colocar left join mas não está funcionando)
O meu select está assim:
Select d.TipoDes, Sum(d.VlDeDes), Sum(d.VlPgDes) from Despesas as d where d.VeicDes = 1 group by d.TipoDes;
Alguém poderia me ajudar?
Estou começando a aprender o SQL e não estou conseguindo fazer uma coisa aparentemente simples. Pelo que li, tenho que usar Group by para realizar o que quero, mas vamos lá:
Tenho uma tabela no Access chamada Despesas onde existem as colunas Tipo, ValorDespesa, ValorPago, VeicDes.
Em uma outra tabela, Tipo de Despesas, tenho a descrição da despesa na coluna DescDesp.
O que eu quero fazer é um select que produza o resultado abaixo agrupado por tipo:
Tipo - Descrição da Despesa - Valor Despesa - Valor Pago
O que eu não consigo fazer é colocar a descrição da despesa (tentei colocar left join mas não está funcionando)
O meu select está assim:
Select d.TipoDes, Sum(d.VlDeDes), Sum(d.VlPgDes) from Despesas as d where d.VeicDes = 1 group by d.TipoDes;
Alguém poderia me ajudar?
Adicione também o campo d.TipoDes
Eu não entendi, já que o campo d.TipoDes está no select:
Select d.TipoDes, Sum(d.VlDeDes), Sum(d.VlPgDes) from Despesas as d where d.VeicDes = 1 group by d.TipoDes;
O select acima está funcionando, porém eu quero que traga também a descrição do tipo da despesa que está em outra tabela. Vou tentar explicar melhor:
As minhas tabelas estão assim:
Tabela: Despesas - Campos: (IdDes, TipoDes, VlDeDes, VlPgDes, VeicDes)
No banco: (1, 1, 100, 100, 1) (2, 1, 200, 0, 1) (3, 1, 50, 0, 1)
Tabela: TipoDespesas - Campos: (IdTDe, DescTDe)
No banco: (1, Gasolina)
Eu preciso de um select que me traga a somatória dos campos despesas(VlDeDes) e pagamentos (VlPgDes) agrupados por tipo (TipoDes) e que o tipo venha acompanhado da descrição (DescDes). Utilizando o exemplo acima o select teria que produzir:
TipoDes DescDes VlDeDes VlPgDes
1 Gasolina 350 100
Select d.TipoDes, Sum(d.VlDeDes), Sum(d.VlPgDes) from Despesas as d where d.VeicDes = 1 group by d.TipoDes;
O select acima está funcionando, porém eu quero que traga também a descrição do tipo da despesa que está em outra tabela. Vou tentar explicar melhor:
As minhas tabelas estão assim:
Tabela: Despesas - Campos: (IdDes, TipoDes, VlDeDes, VlPgDes, VeicDes)
No banco: (1, 1, 100, 100, 1) (2, 1, 200, 0, 1) (3, 1, 50, 0, 1)
Tabela: TipoDespesas - Campos: (IdTDe, DescTDe)
No banco: (1, Gasolina)
Eu preciso de um select que me traga a somatória dos campos despesas(VlDeDes) e pagamentos (VlPgDes) agrupados por tipo (TipoDes) e que o tipo venha acompanhado da descrição (DescDes). Utilizando o exemplo acima o select teria que produzir:
TipoDes DescDes VlDeDes VlPgDes
1 Gasolina 350 100
Select tipoDespesas.descTde, Sum(d.VlDeDes), Sum(d.VlPgDes)
from Despesas as d
left join tipoDespesas on tipodespesas.idTDe = d.TipoDes
where d.VeicDes = 1
group by tipoDespesas.descTde;
Ou
Select tipoDespesas.descTde, Sum(d.VlDeDes), Sum(d.VlPgDes)
from Despesas as d, tipoDespesas
Where d.VeicDes = 1 and tipodespesas.idTDe = d.TipoDes
group by tipoDespesas.descTde;
Se você pesquisar um pouco achará a solução, um simples select deste com tabelas relacionadas não é difÃcil de se fazer.
from Despesas as d
left join tipoDespesas on tipodespesas.idTDe = d.TipoDes
where d.VeicDes = 1
group by tipoDespesas.descTde;
Ou
Select tipoDespesas.descTde, Sum(d.VlDeDes), Sum(d.VlPgDes)
from Despesas as d, tipoDespesas
Where d.VeicDes = 1 and tipodespesas.idTDe = d.TipoDes
group by tipoDespesas.descTde;
Se você pesquisar um pouco achará a solução, um simples select deste com tabelas relacionadas não é difÃcil de se fazer.
Obrigado Guimoraes123
Na realidade, eu pesquisei algumas coisas e quando tentava via left join, o access me retornava a mensagem [Ô]Você tentou executar uma consulta que não inclui a expressão desctde especificada como parte de uma função agregada[Ô]. Como sou inexperiente em SQL, não percebi que o meu group by deveria ser feito por desctde e não por tipodes.
Agradeço a ajuda
Na realidade, eu pesquisei algumas coisas e quando tentava via left join, o access me retornava a mensagem [Ô]Você tentou executar uma consulta que não inclui a expressão desctde especificada como parte de uma função agregada[Ô]. Como sou inexperiente em SQL, não percebi que o meu group by deveria ser feito por desctde e não por tipodes.
Agradeço a ajuda
Tópico encerrado , respostas não são mais permitidas