GARANTIR DESCONTO

Fórum Dúvida Com Select #48595

26/12/2004

0

No select que tenho abaixo eu seleciono a quantidade de produtos vendido somo e as agrupo por descrição.
Na tabela detalhe_vendas tenho os itens que foram vendidos, e na tabela resumo_vendas tenho os dados da venda como número data etc..
elas se relacionam pelo campo num_resumo.


select produtos.descricao,sum(detalhe_vendas.valor_total)
from detalhe_vendas,produtos,resumo_vendas
where produtos.cod_barras=detalhe_vendas.cod_produto and
detalhe_vendas.num_resumo=resumo_vendas.num_resumo
group by produtos.descricao



Gostaria de selecionar os itens da tabela detalhe_vendas quando a data de venda na tabela resumo_vendas estiver entre o periodo solicitado.

Meu campo data é do tipo timestamp

Tentei fazer a select do jeito abaixo e não deu certo:


select produtos.descricao,sum(detalhe_vendas.valor_total), cast(resumo_vendas.data_hora as date)
from detalhe_vendas,produtos,resumo_vendas
where produtos.cod_barras=detalhe_vendas.cod_produto and
detalhe_vendas.num_resumo=resumo_vendas.num_resumo and cast(resumo_vendas.data_hora as date)between ´10/11/2004´ and ´10/11/2004´
group by produtos.descricao



quando faço isso me da o seguinte erro:

Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause)


Se alguem puder me ajudar eu agradeço


Obrigado


Gameiro

Gameiro

Responder

Posts

26/12/2004

Gameiro

Pessoal consegui resolver em partes com o select abaixo:

select cast(resumo_vendas.data_hora as date) ,produtos.descricao,sum(detalhe_vendas.valor_total)
from detalhe_vendas,produtos,resumo_vendas
where produtos.cod_barras=detalhe_vendas.cod_produto and
detalhe_vendas.num_resumo=resumo_vendas.num_resumo and cast(resumo_vendas.data_hora as date)between ´12/23/2004´ and ´12/24/2004´
group by 1,2



Só que ele so usasse a data para selecionar e que agrupasse por produto.descricao.


Se eu tiro algum do agrupamentos acima da erro:

Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause)

Obrigado


Responder

Gostei + 0

27/12/2004

Emerson Nascimento

a instrução:

select produtos.descricao,
cast(resumo_vendas.data_hora as date),
sum(detalhe_vendas.valor_total)
from detalhe_vendas, produtos, resumo_vendas
where produtos.cod_barras=detalhe_vendas.cod_produto
and detalhe_vendas.num_resumo=resumo_vendas.num_resumo
and resumo_vendas.data_hora between ´23.12.2004´ and ´24.12.2004´
group by produtos.descricao

deveria funcionar normalmente, a não ser que o campo descrição seja do tipo BLOB. se for, tente agrupar pelo código do produto:

select max(produtos.descricao),
cast(resumo_vendas.data_hora as date), // pq o cast?
sum(detalhe_vendas.valor_total)
from detalhe_vendas, produtos, resumo_vendas
where produtos.cod_barras=detalhe_vendas.cod_produto
and detalhe_vendas.num_resumo=resumo_vendas.num_resumo
and resumo_vendas.data_hora between ´23.12.2004´ and ´24.12.2004´
group by produtos.cod_barras


Responder

Gostei + 0

27/12/2004

Gameiro

Obrigado Emerson, consegui resolver, como não preciso exibir a data eu tirei ele do select deixei só no between ai funciono, e o cast eu vi aqui no forum que é o jeito certo de trabalhar com campos timestamp quando se quer pegar a data.





Valeu e até mais.


Responder

Gostei + 0

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

Aceitar