3

在 MySQL 中,如果您想报告一个公式,然后在另一个公式中使用该结果,您可以执行以下操作:

SELECT @var1 := column1+column2 AS var1
, POWER(@var1,2) AS var2squared
FROM database.table;

MS SQL Server 中是否有等价物?

4

3 回答 3

3

据我所知,SQL Server 中没有等价物。

但您始终可以使用 CTE:

WITH data AS (
    SELECT column1 + column2 AS var1
    FROM table
)
SELECT var1, POWER(var1, 2) AS var2squared
FROM data;
于 2013-11-04T16:39:17.433 回答
3

这是不可能的,因为 MSSQL 实际上可以正常工作。MySQL 本质上是一个围绕 SQL 的过程包装器,因此这种构造可以工作,因为它从左到右处理 - 因为@var1在评估第二个字段时存在。

MSSQL 将 SQL 作为基于原子表的查询语言正确执行,因此在评估字段时可以使用整个选定的数据,然后根据中间结果对它们进行评估。

另一个答案中提出的解决方法是解决问题的好方法。

于 2013-11-04T17:27:42.253 回答
3

您也可以使用交叉应用:

SELECT v.Var1, POWER(v.Var1, 2) AS Var2Squared
    FROM [Table] t
    CROSS APPLY (SELECT t.Column1 + t.Column2 AS Var1) v
;
于 2013-11-04T17:28:28.007 回答