Sql 多case语句中的别名列名

Sql 多case语句中的别名列名,sql,oracle,case,Sql,Oracle,Case,我试图使用case语句检索别名列的值 CASE WHEN FieldA = 'TestA' THEN FieldA1 WHEN FieldB = 'TestB' THEN FieldB1 ELSE NULL END AS Alias1 但当我尝试使用此别名来检索另一个别名的值时,我得到了一个错误 CASE WHEN Alias1 = FieldA1 THEN FieldA0 WHEN Alias1 = FieldB1 THEN FieldA1

我试图使用case语句检索别名列的值

CASE 
    WHEN FieldA = 'TestA' THEN FieldA1
    WHEN FieldB = 'TestB' THEN FieldB1
    ELSE NULL
END AS Alias1 
但当我尝试使用此别名来检索另一个别名的值时,我得到了一个错误

CASE
    WHEN Alias1 = FieldA1 THEN FieldA0
    WHEN Alias1 = FieldB1 THEN FieldA1
    ELSE NULL
END AS Alias2 
我收到的错误消息是:


您能否建议一种消除错误的方法或满足我要求的任何替代方法

您不能在同一
SELECT
子句中使用列别名。你有两个选择:

使用子查询:

SELECT Alias1,
       CASE
            WHEN Alias1 = FieldA1 THEN FieldA0
            WHEN Alias1 = FieldB1 THEN FieldA1
            ELSE NULL
       END AS Alias2 
FROM (
    SELECT CASE 
                WHEN FieldA = 'TestA' THEN FieldA1
                WHEN FieldB = 'TestB' THEN FieldB1
                ELSE NULL
           END AS Alias1,
           FieldA1
           FieldB1
    ...)
或者,您可以重复在第一个
案例中使用的逻辑:

SELECT CASE 
            WHEN FieldA = 'TestA' THEN FieldA1
            WHEN FieldB = 'TestB' THEN FieldB1
            ELSE NULL
       END AS Alias1,
       CASE 
            WHEN FieldA = 'TestA' THEN FieldA0
            WHEN FieldB = 'TestB' THEN FieldB0
            ELSE NULL
       END AS Alias2

谢谢你的意见。我现在意识到我错过了第二个明显的解决方案:)