Doubt with sum of values in sql server 2008 [duplicate]

-1

I have the query below that returns me the values of DESCONTO_PRECO and DESCONTO_PRECO_ESTADO, I would like to know if I can sum these results so that it comes in the same field.

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 DESCONTO_PRECO,

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  DESCONTO_PRECO_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 DESCONTO_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 DESCONTO_PRECO_PROMOCAO_ESTADO, 

P.PRECO,P.DESCONTO01,P.DESCONTO02,P.DESCONTO03,P.DESCONTO04,P.DESCONTO05,P.IDPRODUTO,P.CODIGO
from TB_PRODUTO P
WHERE CODIGO = '016055IR'
    
asked by anonymous 23.02.2016 / 13:26

1 answer

0

You can:

WITH CTE_VALORES AS (
    SELECT 
        (P.DESCONTO01 / 100 ) * P.PRECO AS DESCONTO_PRECO_1,
        (P.DESCONTO02 / 100 ) * P.PRECO AS DESCONTO_PRECO_2,
        (P.DESCONTO03 / 100 ) * P.PRECO AS DESCONTO_PRECO_3,
        (P.DESCONTO04 / 100 ) * P.PRECO AS DESCONTO_PRECO_4,
        CASE WHEN P.ADICIONAL_ESTADO = 'S' 
            THEN 0 
            ELSE (P.DESCONTO05 / 100 ) * PRECO 
        END AS DESCONTO_PRECO_5,
        (P.DESCONTO01 / 100 ) * P.PROMOCAO AS DESCONTO_PROMO_1,
        (P.DESCONTO02 / 100 ) * P.PROMOCAO AS DESCONTO_PROMO_2,
        (P.DESCONTO03 / 100 ) * P.PROMOCAO AS DESCONTO_PROMO_3,
        (P.DESCONTO04 / 100 ) * P.PROMOCAO AS DESCONTO_PROMO_4,
        CASE WHEN P.ADICIONAL_ESTADO = 'S' 
            THEN 0 
            ELSE (P.DESCONTO05 / 100 ) * PROMOCAO 
        END AS DESCONTO_PROMO_5,
        P.PRECO,
        P.DESCONTO01,
        P.DESCONTO02,
        P.DESCONTO03,
        P.DESCONTO04,
        P.DESCONTO05,
        P.IDPRODUTO,
        P.CODIGO
    FROM TB_PRODUTO P
    WHERE CODIGO = '016055IR'
)

select 
    DESCONTO_PRECO_1 + DESCONTO_PRECO_2 + DESCONTO_PRECO_3 + DESCONTO_PRECO_4 + DESCONTO_PRECO_5 AS DESCONTO_PRECO,
    DESCONTO_PROMO_1 + DESCONTO_PROMO_2 + DESCONTO_PROMO_3 + DESCONTO_PROMO_4 + DESCONTO_PROMO_5 AS DESCONTO_PROMOCAO,
    PRECO,
    DESCONTO01,
    DESCONTO02,
    DESCONTO03,
    DESCONTO04,
    DESCONTO05,
    IDPRODUTO,
    CODIGO
from CTE_VALORES
    
23.02.2016 / 13:46