您知道如何在SQL语句中为这样的返回值分配临时列名吗?
SELECT something+this+that AS myvalue FROM mytable
Run Code Online (Sandbox Code Playgroud)
是否可以使用临时名称myvalue作为条件?
SELECT something+this+that AS myvalue FROM mytable WHERE myvalue = 10
Run Code Online (Sandbox Code Playgroud)
我似乎无法弄清楚这样做的语法.我可以弄清楚如何做到这一点的唯一方法是再次重写整个列定义,如下所示:
SELECT something+this+that AS myvalue FROM mytable WHERE something+this+that = 10
Run Code Online (Sandbox Code Playgroud)
显然,上面的例子是一个简单的例子.我需要执行此操作的查询非常复杂,因此为每个条件重写每个返回的列定义将非常麻烦.
所以无论如何,这是什么语法?可能吗?
使用派生表...
SELECT
myvalue
FROM
(
SELECT something+this+that AS myvalue FROM mytable
) foo
WHERE
myvalue = 10
Run Code Online (Sandbox Code Playgroud)
或者使用看起来更优雅但相同的CTE
;WITh myCTE AS
(
SELECT something+this+that AS myvalue FROM mytable
)
SELECT
myvalue
FROM
myCTE
WHERE
myvalue = 10
Run Code Online (Sandbox Code Playgroud)
或计算列,以便正常使用
ALTER TABLE MyTable ADD myvalue AS something+this+that
Run Code Online (Sandbox Code Playgroud)