Doubt with cast sql server 2008

Asked

Viewed 90 times

-2

I have a sql query is want to bring the PRECO_LIQUIDO information 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 posted answer was 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   
  • @Marconciliosouza duplicated in loop does not roll

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,  

0

You can use the 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 
  • friend, very grateful for the help, but missed the cast for the case, see if it can help! posted the code on the question with the adjustments

  • ready.........

Browser other questions tagged

You are not signed in. Login or sign up in order to post.