Case
將 case 語句中的變數結果設置為在同一 select 語句中再次使用
是否可以在單個 select 語句中創建,如下所示:
SELECT name, CASE WHEN name = 'a' THEN 'a' ELSE 'b' END tag, CASE WHEN tag = 'a' THEN 'a2' ELSE tag = 'b2' END tag2 FROM table_name
我的原因是在單個語句的前一列中,我想在我的另一列中使用它的 case 語句結果。
我想知道是否可以使用以下變數來完成:
SELECT name, CASE WHEN name = 'a' THEN 'a' ELSE 'b' END @result = tag, CASE @result WHEN 'a' THEN 'a2' ELSE 'b2' END tag2 FROM table_name
我知道第二個程式碼不正確,但這是我需要的邏輯。多謝你們!
您需要重複表達式,或者在單獨的範圍內派生它,例如:
SELECT name, tag, CASE WHEN tag = 'a' THEN 'a2' ELSE 'b2' END AS tag2 FROM ( SELECT name, CASE WHEN name = 'a' THEN 'a' ELSE 'b' END AS tag FROM dbo.table_name ) AS derived;