I have the following situation, 5 discount fields that receive the discount name 01 through 05. this sql query works down (1), makes the correct calculation more only when you have only 1 of the rebates filled, if I have more than 1 then the result will not be correct. For the result to be correct if I have more than 1 discount, I need to find the individual value of each discount on the price value is there after this I would have an overall discount on the value, I could add up all the discounts, I would have to make a for is to calculate each one separate.
How could I do this? Thanks!
DECLARE @VALOR_ENCONTRADO1 real
DECLARE @VALOR_ENCONTRADO2 real
DECLARE @VALOR_ENCONTRADO3 real
DECLARE @VALOR_ENCONTRADO4 real
DECLARE @VALOR_ENCONTRADO5 real
@VALOR_ENCONTRADO1 =(DESCONTO01 / 100) * PRECO
@VALOR_ENCONTRADO2 =(DESCONTO02 / 100) * PRECO
@VALOR_ENCONTRADO3 =(DESCONTO03 / 100) * PRECO
@VALOR_ENCONTRADO4 =(DESCONTO04 / 100) * PRECO
@VALOR_ENCONTRADO5 =(DESCONTO05 / 100) * PRECO
(1)
select
case (ADICIONAL_ESTADO)
when 'S' then (SUM(DESCONTO01 + DESCONTO02 + DESCONTO03 + DESCONTO04 + 0 ) / 100) * PRECO
when 'N' then (SUM(DESCONTO01 + DESCONTO02 + DESCONTO03 + DESCONTO04+DESCONTO05) / 100) * PRECO
END AS VALOR_LIQUIDO,
case (ADICIONAL_ESTADO)
when 'S' then (SUM(DESCONTO01 + DESCONTO02 + DESCONTO03 + DESCONTO04 + 0 ) / 100 ) * PROMOCAO
when 'N' then (SUM(DESCONTO01 + DESCONTO02 + DESCONTO03 + DESCONTO04+DESCONTO05) / 100 ) * PROMOCAO
END AS VALOR_PROMOCAO,
IDPRODUTO,CODIGO,PRECO,DESCONTO01,DESCONTO02,DESCONTO03,DESCONTO04,DESCONTO05
from TB_PRODUTO
WHERE CODIGO = '016055IR'
GROUP BY ADICIONAL_ESTADO, IDPRODUTO,CODIGO, PRECO,PROMOCAO,DESCONTO01,DESCONTO02,DESCONTO03,DESCONTO04,DESCONTO05
Sqlafterpostingtheanswer:
select
(DESCONTO01 / 100 ) * PRECO AS DESCONTO_PRECO_01,
(DESCONTO02 / 100 ) * PRECO AS DESCONTO_PRECO_02,
(DESCONTO03 / 100 ) * PRECO AS DESCONTO_PRECO_03,
(DESCONTO04 / 100 ) * PRECO AS DESCONTO_PRECO_04,
case (ADICIONAL_ESTADO )
when 'S' then (0 / 100 ) * PRECO --0 é o valor do desconto para o estado caso tenha vai receber um valor
END AS DESCONTO_PRECO_05,
(DESCONTO01 / 100 ) * PRECO AS DESCONTO_PRECO_01,
(DESCONTO02 / 100 ) * PRECO AS DESCONTO_PRECO_02,
(DESCONTO03 / 100 ) * PRECO AS DESCONTO_PRECO_03,
(DESCONTO04 / 100 ) * PRECO AS DESCONTO_PRECO_04,
case (ADICIONAL_ESTADO )
when 'N' then (DESCONTO05 / 100 ) * PRECO -- se não tem desconto para o estado vai receber o campo de desconto05
END AS DESCONTO_PRECO_05,
IDPRODUTO,CODIGO,PRECO,DESCONTO01,DESCONTO02,DESCONTO03,DESCONTO04,DESCONTO05
from TB_PRODUTO
WHERE CODIGO = '016055IR'
GROUP BY ADICIONAL_ESTADO, IDPRODUTO,CODIGO, PRECO,PROMOCAO,DESCONTO01,DESCONTO02,DESCONTO03,DESCONTO04,DESCONTO05
Image Response: