在查詢中,我有一個這樣的列:查詢與案件列
case when X = 1 then
case when Y <> 0 then YY else XX end
else ZZ
end as MyColumn
有沒有一種方式,在另一列,檢查上面列值引用MyColumn
而不是重寫case語句?
我應該根據MyColumn
值來評估另一列。
由於
在查詢中,我有一個這樣的列:查詢與案件列
case when X = 1 then
case when Y <> 0 then YY else XX end
else ZZ
end as MyColumn
有沒有一種方式,在另一列,檢查上面列值引用MyColumn
而不是重寫case語句?
我應該根據MyColumn
值來評估另一列。
由於
否,不無任一:
做初始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
如果我理解你c (或者我可能不會),(在這張表中,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
你也許可以用子查詢來做到這一點。例如:
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;
可以編寫這樣 情況下,當X = 1和Y <> 0,則YY 當X = 1和Y = 0,則XX 別的ZZ端 端作爲MyColumn
這裏只有一種情況。
你是什麼意思「檢查上面的列值」。你能給個例子嗎? – 2010-09-08 20:29:00