MS SQL查询中等价于MySQL用户自定义变量的内容

3

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

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

在MS SQL Server中有相应的功能吗?
3个回答

3
据我所知,在SQL Server中没有相应的功能。但是你可以使用CTE:
WITH data AS (
    SELECT column1 + column2 AS var1
    FROM table
)
SELECT var1, POWER(var1, 2) AS var2squared
FROM data;

3
您也可以使用CROSS APPLY:
SELECT v.Var1, POWER(v.Var1, 2) AS Var2Squared
    FROM [Table] t
    CROSS APPLY (SELECT t.Column1 + t.Column2 AS Var1) v
;

3
在这种方式下是不可能的,因为MSSQL实际上是正常工作的。MySQL本质上是SQL的过程式封装器,因此这个构造可以工作,因为它从左到右处理 - 因此在评估第二个字段时@var1存在。
MSSQL正确执行SQL作为基于原子表的查询语言,因此在评估字段时选择的数据作为一个整体可用,并且它们都基于中间结果进行评估。
在其他答案中提出的解决方法是解决问题的好方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接