我可以定义一个新列并在同一查询中使用它吗?
例如,
Select
student, age + 10 as trueage,
case when trueage < 25 then 'False' else 'True' end
From
class
感谢您提前的帮助!
我可以定义一个新列并在同一查询中使用它吗?
例如,
Select
student, age + 10 as trueage,
case when trueage < 25 then 'False' else 'True' end
From
class
感谢您提前的帮助!
CROSS APPLY
在这里会很方便。这里有一篇不错的文章展示了它的多个用途。
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
select student,
trueAge,
case when trueAge < 25 then 'false' else 'true' end as someColumn
from (
select student, age + 10 as trueAge
from table
) thingy
还有其他的方法可以实现这个功能,这只是其中之一。
类似这样:
Select student, age + 10 as trueage,
case when (age + 10) < 25 then 'False' else 'True' end
from class
CROSS APPLY
的方法。其中之一是“引入新列”。 - Vladimir Baranov