2017-04-20 45 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