MINHA BASE DE DADOS É O FIREBIRD 1.5, USO O IB EXPERT PARA EDITAR.
TENHO O SEGUINTE COMANDO QUE NÃO ESTA DANDO CERTO.
select produto.codigo_produto,
produto.nome,
produto.preco_custo,
icmspdv.percentual_aliquota,
sum(preco_custo * percentual_aliquota / 100)
from produto,
icmspdv
group by produto.preco_custo,
icmspdv.percentual_aliquota
where produto.estoque_atual > 0
order by produto.nome asc
O CODIGO DE ERRO QUE DEU FOI:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 10, char 1.
where.
ALGUEM SABE O ERRO E PODE ME EXPLICAR ONDE EU ERREI ?
MINHA BASE DE DADOS É O FIREBIRD 1.5, USO O IB EXPERT PARA EDITAR.
TENHO O SEGUINTE COMANDO QUE NÃO ESTA DANDO CERTO.
select produto.codigo_produto,
produto.nome,
produto.preco_custo,
icmspdv.percentual_aliquota,
sum(preco_custo * percentual_aliquota / 100)
from produto,
icmspdv
group by produto.preco_custo,
icmspdv.percentual_aliquota
where produto.estoque_atual > 0
order by produto.nome asc
O CODIGO DE ERRO QUE DEU FOI:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 10, char 1.
where.
ALGUEM SABE O ERRO E PODE ME EXPLICAR ONDE EU ERREI ?
VALEW[/quote]
select produto.codigo_produto,
produto.nome,
produto.preco_custo,
icmspdv.percentual_aliquota,
sum(produto.preco_custo * icmspdv.percentual_aliquota / 100)
from produto,
icmspdv
where produto.estoque_atual > 0
group by produto.preco_custo,
icmspdv.percentual_aliquota
order by produto.nome asc
Atente a ordem… primeiro o where, depois o group e depois o order…
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause)
Quanto tu usa um Group By, obrigatoriamente deves agrupar por todos os campos contidos no select. No teu caso, tem de agrupar por produto.codigo_produto, produto.nome, produto.preco_custo, icmspdv.percentual_aliquota. A ordem dos agrupamentos podes definir como quiseres.
TORÇO PARA O BRASIL DE PELOTAS O COLORADO MAS MUITO OBRIGADO PELA EXPLICAÇÃO
AGORA DEU CERTO, SÓ QUE EU ACHO QUE É MUITO GRANDE A MINHA TABELA QUE TRAVO O IBEXPERT
Quando usamos funções de agrupamento, por exemplo sum(), queremos unir varios registros em comum, de um produto por exemplo, em uma unica linha (ou algumas dependendo de quantas colunas agrupar) com uma soma de alguma coluna.
Um exemplo seria uma relação produto / venda: Trazendo somente os nomes dos produtos e o valor total de vendas realizadas POR produto.
select p.nome_produto, sum(v.valor_venda) soma
from produto p, venda v
where p.codigo_produto = v,codigo_produto
group by p.nome
order by p.nome
Outro caso seria adicionar mais uma coluna no agrupamento, com certeza vai trazer mais registros:
select p.nome_produto, m.nome_marca, sum(v.valor_venda) soma
from produto p, venda v, marca m
where p.codigo_produto = v,codigo_produto
group by p.nome, m.nome_marca
order by p.nome, m.nome_marca
Jonata, ao postar, por favor, desligue o caps lock. É considerado falta de educação, já que normalmente tudo em maiúsculas é usado para indicar que você está gritando. Fora que fica pior de ler.