Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, boa tarde. Sou novo no fórum e gostaria de tirar uma dúvida.
Antes de mais nada, já pesquisei em diversos sites e não encontrei nada que possa me ajudar.
A minha dúvida é a seguinte:
Eu tenho uma tabela com os preços "padrão" da empresa. Até aqui tudo bem.
O problema é que alguns clientes possuem preço diferenciado da tabela padrão.
Para isso, eu criei uma tabela com preços especiais para clientes.
O problema está no SELECT para trazer essas informações cruzadas. Se ele possuir preço especial, coloca o preço especial. Caso contrário, coloca o preço de tabela. Isso para cada produto existente na empresa.
Da forma que eu fiz, ele só retorna os preços de tabela que nunca foram cadastrados com preço especial por algum cliente.
Por exemplo: No começo (sem preço especial) roda sem problema. Na hora que eu coloco um preço especial do produto 1, os outros clientes (que não possuem preço especial) não conseguem mais ver este produto.
O código é o seguinte:
SELECT
b.codigo_cliente AS COD_CLI,
a.codigo_ensaio AS ID_ENSAIO,
c.tipo AS CLASSE,
c.cod_ensaio_Tribolab AS COD_TRIBO,
c.Descricao AS DESCRICAO,
a.valor AS VALOR_TABELA,
b.valor AS VALOR_CLIENTE,
ISNULL(b.valor, a.valor) AS VALOR_FINAL,
CASE WHEN b.valor IS NOT NULL THEN b.data_alter ELSE a.data_alter END AS DATA_ALTER,
CASE WHEN b.valor IS NOT NULL THEN '*' ELSE '' END AS PRECO_ESPECIAL,
CASE WHEN b.valor < a.valor THEN '< Tabela' ELSE '>= Tabela' END AS OBS,
CASE WHEN b.valor IS NOT NULL THEN '0' ELSE c.desc_max END AS DESCONTO
FROM [SituacaoClientes2].[Comercial].[Ensaios] AS c
LEFT JOIN [SituacaoClientes2].[Comercial].[Preco_Tribolab] AS a ON c.codigo_ensaio = a.codigo_ensaio
LEFT JOIN [SituacaoClientes2].[Comercial].[Preco_Clientes] AS b ON c.codigo_ensaio = b.codigo_ensaio
--WHERE b.codigo_cliente = '9999998' OR b.codigo_cliente IS NULL
ORDER BY a.codigo_ensaio
Carregando comentários...