在SQL SELECT语句中重用别名字段

Гро*_*ный 11 sql sql-server alias sql-server-2008

我想实现这样的目标:

SELECT 
  (CASE WHEN ...) AS FieldA,
  FieldA + 20 AS FieldB
FROM Tbl
Run Code Online (Sandbox Code Playgroud)

假设通过"..."我已经替换了一个冗长而复杂的CASE语句,我不想在选择FieldB和使用别名时重复FieldA.

注意,这将返回多行,因此在我的情况下,语句之外的DECLARE/ 不好.SETSELECT

Pet*_*ang 13

workaroud将使用子查询:

SELECT
  FieldA,
  FieldA + 20 AS FieldB
FROM (
  SELECT 
    (CASE WHEN ...) AS FieldA
  FROM Tbl
) t
Run Code Online (Sandbox Code Playgroud)

为了提高可读性,您还可以使用CTE:

WITH t AS (
  SELECT 
    (CASE WHEN ...) AS FieldA
  FROM Tbl
)
SELECT
  FieldA,
  FieldA + 20 AS FieldB
FROM
  t
Run Code Online (Sandbox Code Playgroud)