在查询中,我有一个这样的列:
case when X = 1 then
case when Y <> 0 then YY else XX end
else ZZ
end as MyColumn
在另一列中,有没有办法检查引用MyColumn
的上述列值而不是重写case语句?
我应该根据MyColumn
值来评估另一列。
由于
答案 0 :(得分:3)
不,不是没有:
在派生表/内联视图中执行初始CASE评估:
SELECT aa.mycolumn,
CASE
WHEN aa.mycolumn = ? THEN ....
END AS next_mycolumn_evaluation
FROM (SELECT CASE
WHEN X = 1 THEN
CASE WHEN Y <> 0 THEN YY
ELSE XX END
ELSE ZZ
END AS mycolumn
FROM ...) aa
答案 1 :(得分:0)
如果我理解正确,(我可能没有),(假设X,Y,XX,YY和ZZ是此表中的其他列),您可以在此表上创建一个计算列,即此表达式因为它是公式..
Alter Table TableName Add NewColumn
as Case when X = 1 then
Case when Y <> 0 YY else XX end
else ZZ end
答案 2 :(得分:0)
你可以用子查询来做。例如:
Select someTable.ID, someTable.A, someTable.B,
case subT.myColumn = 0 then 'BLARG' else 'huh?' end As outerMyColumn
from someTable,
(Select ID, case when X = 1 then
case when Y <> 0 YY else XX end
else ZZ
end as MyColumn
From someTable
where someCondition) subT
where subT.ID = someTable.ID;
答案 3 :(得分:0)
你可以这样写 当X = 1且Y&lt; 0然后是YY 当X = 1且Y = 0时,则为XX 否则ZZ结束 结束为MyColumn
这只有一个案例。