Doubt with cast sql server 2008

-2

I have a sql query I want to bring the information PRECO_LIQUIDO is PRECO_LIQUIDO_PROMOCAO formatted as decimal using a cast decimal (12, 2) How could it be done, thank you

select 
 --calculo do desconto individual
((P.DESCONTO01 / 100 ) * P.PRECO )+ 
((P.DESCONTO02 / 100 ) * P.PRECO )+
((P.DESCONTO03 / 100 ) * P.PRECO )+
((P.DESCONTO04 / 100 ) * P.PRECO ) AS  PRECO_LIQUIDO, 

case (P.ADICIONAL_ESTADO )  
  when 'S' then   
  (2.0 / 100 ) * P.PRECO   --0 é o valor do desconto para o estado caso tenha vai receber um valor
  when 'N' then   (P.DESCONTO05 / 100 ) * PRECO 
END AS  PRECO_LIQUIDO_ESTADO,  

 --calculo do desconto individual promoção
((P.DESCONTO01 / 100 ) * P.PROMOCAO ) +
((P.DESCONTO02 / 100 ) * P.PROMOCAO ) +
((P.DESCONTO03 / 100 ) * P.PROMOCAO ) +
((P.DESCONTO04 / 100 ) * P.PROMOCAO ) AS PRECO_LIQUIDO_PROMOCAO,

case (P.ADICIONAL_ESTADO )  
  when 'S' then   (0 / 100 ) * P.PROMOCAO   --0 é o valor do desconto para o estado caso tenha vai receber um valor
  when 'N' then   (P.DESCONTO05 / 100 ) * P.PROMOCAO 
END AS PRECO_LIQUIDO_PROMOCAO_ESTADO, 

P.*
from TB_PRODUTO P
WHERE p.CODIGO IS NOT NULL   

After the response posted it looks like this: missed cast for case (P.ADICIONAL_ESTADO)

select 
 --calculo do desconto individual
 CAST(ISNULL   (((P.DESCONTO01 / 100 ) * P.PRECO )+ 
                ((P.DESCONTO02 / 100 ) * P.PRECO )+
                ((P.DESCONTO03 / 100 ) * P.PRECO )+
                ((P.DESCONTO04 / 100 ) * P.PRECO ),0) AS decimal(12, 2)) AS  PRECO_LIQUIDO, 


case (P.ADICIONAL_ESTADO )  
  when 'S' then   (0 / 100 ) * P.PRECO   --0 é o valor do desconto para o estado caso tenha vai receber um valor
  when 'N' then   (P.DESCONTO05 / 100 ) * PRECO 
END AS  PRECO_LIQUIDO_ESTADO,  

 --calculo do desconto individual promoção
 CAST(ISNULL  (((P.DESCONTO01 / 100 ) * P.PROMOCAO )+
               ((P.DESCONTO02 / 100 ) * P.PROMOCAO ) +
               ((P.DESCONTO03 / 100 ) * P.PROMOCAO ) +
               ((P.DESCONTO04 / 100 ) * P.PROMOCAO ) ,0) AS decimal(12, 2)) AS  PRECO_LIQUIDO_PROMOCAO, 

case (P.ADICIONAL_ESTADO )  
  when 'S' then   (0 / 100 ) * P.PROMOCAO   --0 é o valor do desconto para o estado caso tenha vai receber um valor
  when 'N' then   (P.DESCONTO05 / 100 ) * P.PROMOCAO 
END AS PRECO_LIQUIDO_PROMOCAO_ESTADO, 

P.*
from TB_PRODUTO P
WHERE p.CODIGO IS NOT NULL   
    
asked by anonymous 23.02.2016 / 17:32

2 answers

1

cast for the case:

case (P.ADICIONAL_ESTADO )  
  when 'S' then CAST(((2.0 / 100 ) * P.PRECO) AS decimal(12, 2))
  when 'N' then CAST((P.DESCONTO05 / 100 ) * PRECO) AS decimal(12, 2))
END AS  PRECO_LIQUIDO_ESTADO,  
    
23.02.2016 / 18:16
0

You can use CAST as below.

   declare @TB_PRODUTO table
(
    CODIGO int,
    DESCONTO01 decimal (12, 4),
    DESCONTO02 decimal (12, 4),
    DESCONTO03 decimal (12, 4),
    DESCONTO04 decimal (12, 4),
    DESCONTO05 decimal (12, 4),
    PRECO decimal (12, 4),
    PROMOCAO int,
    ADICIONAL_ESTADO char(1)
)

insert into @TB_PRODUTO values (1, 4.5555,3.4544,2.1111,22.222,323.44,2.3333,1,'S')
select 

--calculo do desconto individual
 CAST(ISNULL    (((P.DESCONTO01 / 100 ) * P.PRECO )+ 
                ((P.DESCONTO02 / 100 ) * P.PRECO )+
                ((P.DESCONTO03 / 100 ) * P.PRECO )+
                ((P.DESCONTO04 / 100 ) * P.PRECO ),0) AS decimal(12, 2)) AS  PRECO_LIQUIDO, 

CAST(ISNULL ((case (P.ADICIONAL_ESTADO )  
              when 'S' then   
              (2.0 / 100 ) * P.PRECO   --0 é o valor do desconto para o estado caso tenha vai receber um valor
              when 'N' then   (P.DESCONTO05 / 100 ) * PRECO 
            END),0) AS decimal(12, 2)) AS  PRECO_LIQUIDO_ESTADO,  

 --calculo do desconto individual promoção
 CAST(ISNULL    (((P.DESCONTO01 / 100 ) * P.PROMOCAO ) +
                ((P.DESCONTO02 / 100 ) * P.PROMOCAO ) +
                ((P.DESCONTO03 / 100 ) * P.PROMOCAO ) +
                ((P.DESCONTO04 / 100 ) * P.PROMOCAO ),0) AS decimal(12, 2))  AS PRECO_LIQUIDO_PROMOCAO,

case (P.ADICIONAL_ESTADO )  
  when 'S' then   (0 / 100 ) * P.PROMOCAO   --0 é o valor do desconto para o estado caso tenha vai receber um valor
  when 'N' then   (P.DESCONTO05 / 100 ) * P.PROMOCAO 
END AS PRECO_LIQUIDO_PROMOCAO_ESTADO, 

P.*
from @TB_PRODUTO P
WHERE p.CODIGO IS NOT NULL 
    
23.02.2016 / 17:49