Dúvidas com SQl e firebird
06/08/2019
0
Segue:
select distinct IA.DESCRICAO,
count(VI.QUANTIDADE) as QTDE,
sum(I.VALOR_TOTAL) as Total
from
venda_ingresso VI
inner join ingresso as I
on VI.ID_VENDA_INGRESSO = I.id
inner join ingresso_atracoes as IA
on VI.id_atracoes = IA.id
WHERE 1=1
and I.DATA_VISITA BETWEEN '02.01.2019' AND '05.08.2019'
group by IA.DESCRICAO, VI.QUANTIDADE, I.VALOR_TOTAL
order by IA.DESCRICAO, VI.QUANTIDADE, I.VALOR_TOTAL
Só que sempre retorna varias linhas da mesma descrição, e não quero eu quero agrupar, por exemplo:
Descricao quantidade total
xyz 500 250,00
xyz2 600 360,00
etc..
Sempre esta retornando linha a linha, e isso eu não quero, preciso dessa forma que está ai em cima.
Alguém sabe como resolver isso? Obrigado a todos e todas.
Fernando Wahl
Post mais votado
06/08/2019
Está retornando várias linhas, pois provavelmente você possui descrições diferentes para cada registro, verifique se não é esta questão ok.
Um abraço,
ITO
Exemplo:
select count(VI.QUANTIDADE) as QTDE,
sum(I.VALOR_TOTAL) as Total
from
venda_ingresso VI
inner join ingresso as I
on VI.ID_VENDA_INGRESSO = I.id
inner join ingresso_atracoes as IA
on VI.id_atracoes = IA.id
WHERE 1=1
and I.DATA_VISITA BETWEEN '02.01.2019' AND '05.08.2019'
neste exemplo irá retornar apenas uma linha, você só consegue agrupar itens iguais, a grosso modo: banana com banana e abacaxi com abacaxi.
Entendo amigo, agradeço novamente, realmente dessa forma agrupo, ja tinha feito assim, mas preciso da descrição entende, preciso da descrição, a quantidade de ingressos vendidos para essa descrição e o valor arrecadado no período escolhido pelo usuário.
É nisso que estou me batendo um pouco.
Agradeço novamente.
Verifica se a tabela filha não possui chave composta.
Fernando Ito
Mais Posts
06/08/2019
Fernando Ito
Está retornando várias linhas, pois provavelmente você possui descrições diferentes para cada registro, verifique se não é esta questão ok.
Um abraço,
ITO
06/08/2019
Fernando Wahl
Verifiquei todas as possibilidades.
Estou vindo de um mundo do SQL Server, onde tudo é possível, kkk.
Se souber de mais alguma coisa eu agradeço.
06/08/2019
Fernando Ito
Está retornando várias linhas, pois provavelmente você possui descrições diferentes para cada registro, verifique se não é esta questão ok.
Um abraço,
ITO
Exemplo:
select count(VI.QUANTIDADE) as QTDE,
sum(I.VALOR_TOTAL) as Total
from
venda_ingresso VI
inner join ingresso as I
on VI.ID_VENDA_INGRESSO = I.id
inner join ingresso_atracoes as IA
on VI.id_atracoes = IA.id
WHERE 1=1
and I.DATA_VISITA BETWEEN '02.01.2019' AND '05.08.2019'
neste exemplo irá retornar apenas uma linha, você só consegue agrupar itens iguais, a grosso modo: banana com banana e abacaxi com abacaxi.
06/08/2019
Fernando Wahl
Está retornando várias linhas, pois provavelmente você possui descrições diferentes para cada registro, verifique se não é esta questão ok.
Um abraço,
ITO
Exemplo:
select count(VI.QUANTIDADE) as QTDE,
sum(I.VALOR_TOTAL) as Total
from
venda_ingresso VI
inner join ingresso as I
on VI.ID_VENDA_INGRESSO = I.id
inner join ingresso_atracoes as IA
on VI.id_atracoes = IA.id
WHERE 1=1
and I.DATA_VISITA BETWEEN '02.01.2019' AND '05.08.2019'
neste exemplo irá retornar apenas uma linha, você só consegue agrupar itens iguais, a grosso modo: banana com banana e abacaxi com abacaxi.
Entendo amigo, agradeço novamente, realmente dessa forma agrupo, ja tinha feito assim, mas preciso da descrição entende, preciso da descrição, a quantidade de ingressos vendidos para essa descrição e o valor arrecadado no período escolhido pelo usuário.
É nisso que estou me batendo um pouco.
Agradeço novamente.
06/08/2019
Fernando Ito
Está retornando várias linhas, pois provavelmente você possui descrições diferentes para cada registro, verifique se não é esta questão ok.
Um abraço,
ITO
Exemplo:
select count(VI.QUANTIDADE) as QTDE,
sum(I.VALOR_TOTAL) as Total
from
venda_ingresso VI
inner join ingresso as I
on VI.ID_VENDA_INGRESSO = I.id
inner join ingresso_atracoes as IA
on VI.id_atracoes = IA.id
WHERE 1=1
and I.DATA_VISITA BETWEEN '02.01.2019' AND '05.08.2019'
neste exemplo irá retornar apenas uma linha, você só consegue agrupar itens iguais, a grosso modo: banana com banana e abacaxi com abacaxi.
Entendo amigo, agradeço novamente, realmente dessa forma agrupo, ja tinha feito assim, mas preciso da descrição entende, preciso da descrição, a quantidade de ingressos vendidos para essa descrição e o valor arrecadado no período escolhido pelo usuário.
É nisso que estou me batendo um pouco.
Agradeço novamente.
Agora entendi o ponto em questão, então no Firebird também funciona a consulta que você postou, fiz um exemplo aqui e deu certo
select distinct p.descricao
, count(vi.quantidade) as qtd
, sum(vi.valor_final_venda) as soma
from vendas v
inner join vendas_itens vi on (v.id = vi.id_venda)
inner join produtos p on (vi.produto = p.id)
where v.id = 47344
group by p.descricao, vi.quantidade, vi.valor_final_venda
order by 1,2,3
agrupou os itens com a mesma descrição, algum outro detalhe que está causando o erro, vou tentar identificar.
06/08/2019
Fernando Ito
Verifiquei todas as possibilidades.
Estou vindo de um mundo do SQL Server, onde tudo é possível, kkk.
Se souber de mais alguma coisa eu agradeço.
Achei o erro, está no group by
group by IA.DESCRICAO, VI.QUANTIDADE, I.VALOR_TOTAL
deixa só como group by IA.DESCRICAO
daí vai dar certo, testa aí por favor!
06/08/2019
Fernando Wahl
Valeu mesmo amigo.
Forte abraço.
06/08/2019
Emerson Nascimento
select IA.DESCRICAO, count(VI.QUANTIDADE) as QTDE, sum(I.VALOR_TOTAL) as Total from venda_ingresso VI inner join ingresso as I on I.id = VI.ID_VENDA_INGRESSO inner join ingresso_atracoes as IA on IA.id = VI.id_atracoes WHERE I.DATA_VISITA BETWEEN '02.01.2019' AND '05.08.2019' group by IA.DESCRICAO order by IA.DESCRICAO
uma dica: quando se usa GROUP BY não faz sentido usar DISTINCT. Geralmente é um ou outro.
Clique aqui para fazer login e interagir na Comunidade :)