如何在同一查询的另一个字段中使用计算字段

Pow*_*ser 4 sql sql-server sql-server-2008 sql-server-2008-r2

我有几十个字段的选择查询."FieldA"是一个大约10行高的Case语句.我现在必须创建一个"FieldB",它使用相同的Case语句加一个常量.

根据我目前对sql-server的了解,我必须重复两次Case语句(一次用于FieldA,一次用于FieldB).要清理我的代码,如何在FieldB的计算中使用fieldA?

理想情况下,我的代码看起来像这样:

Select
    Case ...
        When ... then ...
        When ... then ...
        When ... then ...
    End                     as FieldA,
    FieldA + 1              as FieldB
From TblSource
Run Code Online (Sandbox Code Playgroud)

(我知道一个选项是将数据转储到临时表中,然后更新该临时表.但这种方式会破坏"简化"的概念)

Lam*_*mak 5

像这样做:

;WITH YourCTE AS
(
Select
    Case ...
        When ... then ...
        When ... then ...
        When ... then ...
    End                     as FieldA
From TblSource
)
SELECT FieldA, FieldA + 1 AS FieldB, FieldA + 2 AS FieldC ....
FROM YourCTE
Run Code Online (Sandbox Code Playgroud)

  • 不知道它是唯一的解决方案吗? (2认同)