Sql 多case语句中的别名列名
我试图使用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
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
谢谢你的意见。我现在意识到我错过了第二个明显的解决方案:)