SQL Server引用计算列

MHi*_*ton 26 t-sql sql-server calculated-columns

我有一个带有计算列的select语句,我想在另一个中使用一个计算列的值.这可能吗?这是一个人为的例子来展示我想要做的事情.

SELECT [calcval1] = CASE Statement, [calcval2] = [calcval1] * .25
Run Code Online (Sandbox Code Playgroud)

Mic*_*ren 21

没有.

select中单行的所有结果都是原子的.也就是说,您可以将它们全部视为并行发生,并且不能相互依赖.

如果您指的是计算列,则需要更新公式的输入,以便在选择期间更改结果.

将计算列视为宏或迷你视图,只要您调用它们就会注入一些计算.

例如,这些列将始终相同:

-- assume that 'Calc' is a computed column equal to Salaray*.25
SELECT Calc, Salary*.25 Calc2 FROM YourTable
Run Code Online (Sandbox Code Playgroud)

另请注意,该persisted选项不会改变任何此类选项.它保持值很好的索引值,但原子性不会改变.


eri*_*len 11

不幸的是不是真的,但有时值得的解决方法是

SELECT [calcval1], [calcval1] * .25 AS [calcval2]
FROM (SELECT [calcval1] = CASE Statement FROM whatever WHERE whatever)
Run Code Online (Sandbox Code Playgroud)