2017-04-20 50 views
0

我遇到從COGNOS產生以下代碼:TSQL CASE SYNTAX END = NN

CASE 
    WHEN CASE 
      WHEN 'FIELD1' LIKE 'VAL1' 
       THEN 1 
      WHEN 'FIELD1' LIKE 'VAL2' 
       THEN 2 
      WHEN 'FIELD1' LIKE 'VAL3' 
       THEN 3 
      ELSE 4 
      END = 1 
     THEN 'M' 
    WHEN CASE 
      WHEN 'FIELD1' LIKE 'VAL1' 
       THEN 1 
      WHEN 'FIELD1' LIKE 'VAL2' 
       THEN 2 
      WHEN 'FIELD1' LIKE 'VAL3' 
       THEN 3 
      ELSE 4 
      END = 2 
     THEN 'Q' 
    WHEN CASE 
      WHEN 'FIELD1' LIKE 'VAL1' 
       THEN 1 
      WHEN 'FIELD1' LIKE 'VAL2' 
       THEN 2 
      WHEN 'FIELD1' LIKE 'VAL3' 
       THEN 3 
      ELSE 4 
      END = 3 
     THEN 'Y' 
    ELSE 'T' 
    END AS 'VAL4' 

我不能確定 '=' 運算符的意義如下 'END = NN'。另外,CASE塊似乎是不提供區別值的重複項。

回答

0

比@ SpaceUser7448進一步簡化了這個看起來像:

SELECT 
CASE 
    WHEN 'FIELD1' LIKE 'VAL1' THEN 'M' 
    WHEN 'FIELD1' LIKE 'VAL2' THEN 'Q' 
    WHEN 'FIELD1' LIKE 'VAL3' THEN 'Y' 
    ELSE 'T' 
END AS 'VAL4' 
0

這可能是更清晰

CASE 
    WHEN (
    CASE 
     WHEN 'FIELD1' LIKE 'VAL1' THEN 1 
     WHEN 'FIELD1' LIKE 'VAL2' THEN 2 
     WHEN 'FIELD1' LIKE 'VAL3' THEN 3 
     ELSE 4 
    END 
    ) = 1 THEN 'M' 

    WHEN (
    CASE 
     WHEN 'FIELD1' LIKE 'VAL1' THEN 1 
     WHEN 'FIELD1' LIKE 'VAL2' THEN 2 
     WHEN 'FIELD1' LIKE 'VAL3' THEN 3 
     ELSE 4 
    END 
    ) = 2 THEN 'Q' 

    WHEN (
    CASE 
     WHEN 'FIELD1' LIKE 'VAL1' THEN 1 
     WHEN 'FIELD1' LIKE 'VAL2' THEN 2 
     WHEN 'FIELD1' LIKE 'VAL3' THEN 3 
     ELSE 4 
    END 
    ) = 3 THEN 'Y' 
    ELSE 'T' 
END AS 'VAL4' 

本質的外殼已經爲它的每一個 '何時' 的選項,另一種情況case語句的

所以,

  • 如果字段1是' VAL1',則結果爲'M'
  • 如果Field1爲'VAL2',那麼結果爲'Q'
  • 如果字段1是「VAL3」,那麼結果將是「Y」

,如果字段1是別的那將是「T」

+0

感謝您的澄清。多謝。 –

+0

沒問題。如果你對答案感到滿意,你可以將它投票。 – SpaceUser7448