Dúvida Com Select
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.
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:
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
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
Curtidas 0
Respostas
Gameiro
26/12/2004
Pessoal consegui resolver em partes com o select abaixo:
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
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
GOSTEI 0
Emerson Nascimento
26/12/2004
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
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
GOSTEI 0
Gameiro
26/12/2004
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.
Valeu e até mais.
GOSTEI 0