Case

將 case 語句中的變數結果設置為在同一 select 語句中再次使用

  • January 29, 2017

是否可以在單個 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;

引用自:https://dba.stackexchange.com/questions/162540