- Este tópico contém 3 respostas, 2 vozes e foi atualizado pela última vez 7 meses, 3 semanas atrás por .
- Você deve fazer login para responder a este tópico.
Home › Fóruns › SQL e PL/SQL › Pesquisa
Bom dia pessoal,
tenho uma tabela de % de comissão, com os campos:
data % de comissão
20/12/2021 3
28/12/2020 5
05/01/2021 7
06/01/2021 4
Tenho a tabela VENDAS, que tem as vendas realizadas.
Campos: data da venda, cod. vendedor, cliente, valor venda
Consultar:
através da tabela VENDAS, buscar o % de comissão a ser pago.
Exemplos:
1- uma venda do dia 05/01/2021, a comissão será 7%. Existe comissão lançada nesta data.
2- uma venda do dia 04/01/2021, a comissão será 5%. É preciso buscar a data anterior mais próxima à data da venda, logo será 28/12/2020.
Qual seria solução mais otimizada para fazer esse SELECT vendas x comissão?
Eliza ,
Um modelo ruim na minha opinião , o melhor seria ter um par
inicio e fim de vigência
um simples between resolveria.
daria para garantir a integridade por trigger mas está fora do escopo.
mas …
--maior data encontrada
select max(c1.data_comissao)
from comissoes c1
where (c1.data_comissao) <= <data_parametro>)
--dados desta data
select c2.comissao
from comissoes c2
where c2.data_comissao = (select max(c1.data_comissao)
from comissoes c1
where (c1.data_comissao) <= <data_parametro>))
Isto poderia estar em uma FUNCTION que receberia a data
e retornaria a comissao
Mas …
1) Eu mudaria o modelo
2) Não usaria um campo de nome “data” pois é palavra reservada
bom dia Motta,
Obrigada pelo retorno e pelas dicas.
Pensei nesse select tb, acho que é o mais viável.
Não vamos colocar data inicial e final porque o pessoal quer seguir o padrão do sistema , que está funcionando. Todas as validades só tem uma data, que é a inicial.
Achei legal a ideia da FUNCTION.
Campo “Data”, foi só pra exemplificar.
Valeu muito pelas dicas.
Até mais.
Ok
Java / Programação / Treinamento
Introdução à programação Java: Começando a codificar em Java
junho 30, 2022
Banco de Dados / MySQL / Programação / SQL e PL/SQL / Treinamento
Introdução a Structured Query Language (SQL)
junho 30, 2022
Certificação / Cloud / Oracle / Treinamento
Intensivo preparatório para certificação OCI Foundation – GRATUITO
outubro 22, 2021
junho 30, 2022
junho 29, 2022
junho 29, 2022
Oracle Data Integrator (ODI) – Sênior
junho 29, 2022
Especialista Oracle Fusion Cloud (Benefícios)
junho 29, 2022
Oportunidades Oracle ERP Cloud
junho 21, 2022
Consultor Funcional Oracle EBS Inventory + WMS – Sênior
junho 9, 2022
Consultor Funcional Oracle EBS Inventory + WMS – Sênior
junho 9, 2022
Oportunidades Oracle ERP Cloud
junho 21, 2022
Especialista Oracle Fusion Cloud (Benefícios)
junho 29, 2022
Oracle Data Integrator (ODI) – Sênior
junho 29, 2022
junho 29, 2022