多case语句中的别名列名
Posted
技术标签:
【中文标题】多case语句中的别名列名【英文标题】:Alias Column name in mutiple case statement 【发布时间】:2014-04-11 01:20:30 【问题描述】:我正在尝试使用 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
我得到的错误信息是:
您能否提出一种消除错误的方法或任何满足我要求的替代方法
【问题讨论】:
【参考方案1】:您不能在同一 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
...)
或者你可以重复你在第一个CASE
中使用的逻辑:
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
【讨论】:
感谢您的意见。我现在意识到我错过了明显的第二个解决方案:)以上是关于多case语句中的别名列名的主要内容,如果未能解决你的问题,请参考以下文章