我有一个SQL查询,如下所示,
select Site,DataSource,
(SELECT CASE
WHEN DataSource = 'RFQ' THEN 'ChangeOperator'
ELSE 'SameOperator'
END) AS OperatorScenario,
(SELECT CASE
WHEN OperatorScenario = 'ChangeOperator' THEN '1'
ELSE '022'
END) AS OperatorScenario2
from tablename
Run Code Online (Sandbox Code Playgroud)
当我执行此查询时,我将异常作为无效的列名称OperatorScenario.所以我试着在第二个查询中使用别名中的单个代码,如下所示,
(SELECT CASE
WHEN 'OperatorScenario' = 'ChangeOperator' THEN '1'
ELSE '022'
END) AS OperatorScenario2
Run Code Online (Sandbox Code Playgroud)
所以它总是执行其他部分.请给我一些建议.关心sangeetha
主要问题是您无法在同一查询中引用别名.你也有括号和一个额外的SELECT关键字,看起来像一个子查询,我不相信你想要的(你没有一个FROM条款).
您可以再次复制整个内容(在此过程中修复查询):
SELECT Site, DataSource,
CASE
WHEN DataSource = 'RFQ' THEN 'ChangeOperator'
ELSE 'SameOperator'
END AS OperatorScenario,
CASE
WHEN
CASE
WHEN DataSource = 'RFQ' THEN 'ChangeOperator'
ELSE 'SameOperator'
END = 'ChangeOperator' THEN '1'
ELSE '022'
END AS OperatorScenario2
from tablename
Run Code Online (Sandbox Code Playgroud)
或者,简化:
SELECT Site, DataSource,
CASE
WHEN DataSource = 'RFQ' THEN 'ChangeOperator'
ELSE 'SameOperator'
END AS OperatorScenario,
CASE
WHEN DataSource = 'RFQ' THEN '1'
ELSE '022'
END AS OperatorScenario2
from tablename
Run Code Online (Sandbox Code Playgroud)
或者使用CTE(再次修复您的查询):
WITH cte AS
(
SELECT Site, DataSource,
CASE
WHEN DataSource = 'RFQ' THEN 'ChangeOperator'
ELSE 'SameOperator'
END AS OperatorScenario,
FROM tablename
)
SELECT Site, DataSource, OperatorScenario,
CASE
WHEN OperatorScenario = 'ChangeOperator' THEN '1'
ELSE '022'
END AS OperatorScenario2
FROM cte
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31523 次 |
| 最近记录: |