在MySQL中,如果你想报告一个公式,然后在另一个公式中使用该结果,你可以做类似的事情:
SELECT @var1 := column1+column2 AS var1
, POWER(@var1,2) AS var2squared
FROM database.table;
MS SQL Server中是否有等效的内容?
答案 0 :(得分:3)
据我所知,SQL Server中没有相应的内容。
但你可以随时使用CTE:
WITH data AS (
SELECT column1 + column2 AS var1
FROM table
)
SELECT var1, POWER(var1, 2) AS var2squared
FROM data;
答案 1 :(得分:3)
这是不可能的,因为MSSQL实际上可以正常工作。 MySQL本质上是一个围绕SQL的过程包装器,因此这个构造可以工作,因为它从左到右处理 - 因此在评估第二个字段时存在@var1
。
MSSQL正确地将SQL作为基于原子表的查询语言执行,因此在评估字段时,所选数据作为一个整体可用,然后根据中间结果对它们进行全部评估。
另一个答案中提出的解决方法是解决问题的好方法。
答案 2 :(得分: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
;