sql server use computed column

前端 未结 3 400
长情又很酷
长情又很酷 2021-01-18 06:19

I have a query like this:

select 
(price1 + price2 + price3) as total_price 
from prices

How can i use the computed column total_price to c

相关标签:
3条回答
  • 2021-01-18 06:56
    select T.total_price,
           P.price4 + T.total_price as total_price2
    from prices as P
      cross apply (select P.price1 + P.price2 + P.price3) as T(total_price)
    
    0 讨论(0)
  • 2021-01-18 07:10

    I'd also consider a computed column on the table if this will used often

    ALTER  TABLE prices ADD
       total_price AS (price1 + price2 + price3)
    

    Then your query is

    select 
        total_price,
        (price4 + total_price) as total_price2
    from prices
    

    This way, you can apply the DRY principle...

    0 讨论(0)
  • 2021-01-18 07:13

    No it isn't possible to reference the column alias defined at the same level. Expressions that appear in the same logical query processing phase are evaluated as if at the same point in time.

    As Joe Celko says

    Things happen "all at once" in SQL, not "from left to right" as they would in a sequential file/procedural language model

    You can define it in a CTE and then re-use it outside the CTE however.

    Example

    WITH T
         AS (SELECT ( price1 + price2 + price3 ) AS total_price,
                    price4
             FROM   prices)
    SELECT total_price,
           ( price4 + total_price ) AS total_price2
    FROM   T  
    
    0 讨论(0)
提交回复
热议问题