SQL - 定义列并在同一查询中使用它

时间:2015-08-02 17:49:51

标签: sql sql-server

我可以定义新列并在同一查询中使用它吗?

例如,

Select 
    student, age + 10 as trueage, 
    case when trueage < 25 then 'False' else 'True' end
From 
    class

提前感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

CROSS APPLY在这里会很方便。这是nice article,显示了它的许多用途。

Select
    student
    ,trueage
    ,case when trueage < 25 then 'False' else 'True' end
From
    class
    CROSS APPLY
    (
        SELECT age + 10 as trueage
    ) AS CA

当您有多个级别的复杂公式时,它非常有用,如下所示:

Select
    student
    ,trueage
    ,AgeFlag
From
    class
    CROSS APPLY
    (
        SELECT age + 10 as trueage
    ) AS CA1
    CROSS APPLY
    (
        SELECT case when trueage < 25 then 'False' else 'True' end AS AgeFlag
    ) AS CA2

答案 1 :(得分:0)

如果您考虑使用子查询“相同查询”,那么是。

select student,
       trueAge,
       case when trueAge < 25 then 'false' else 'true' end as someColumn
from ( 
    select student, age + 10 as trueAge
    from table
) thingy

也有其他方法可以做到这一点,这只是其中之一。

答案 2 :(得分:0)

类似的东西:

  Select student, age + 10 as trueage, 
   case when (age + 10) < 25 then 'False' else 'True' end 
   from class