首页 > 解决方案 > 嗨,我正在尝试 CASE WHEN,但它不适用于以下情况。它在执行时返回相同的语句

问题描述

当[实际周转时间]高于 TAT 值时,我希望它为 Over。

CASE(WHEN TAT = 3 AND  [Actual turn around time] > 3 THEN 'Over' 
     WHEN TAT = 7 AND  [Actual turn around time] > 7 THEN 'Over' 
     WHEN TAT = 14 AND  [Actual turn around time] > 14 THEN 'OVER'
     WHEN TAT = 28 AND  [Actual turn around time] > 28 THEN 'Over'
     WHEN TAT = 42 AND  [Actual turn around time] > 42 THEN 'Over'
     WHEN TAT = 52 AND  [Actual turn around time] > 52 THEN 'Over'
     WHEN TAT = 56 AND  [Actual turn around time] > 56 THEN 'Over'
     WHEN TAT = 62 AND  [Actual turn around time] > 62 THEN 'Over'
     WHEN TAT = 84 AND  [Actual turn around time] > 84 THEN 'Over'
     WHEN TAT = 112 AND  [Actual turn around time] > 112 THEN 'Over')
     ELSE 'TEST'
     END AS 'ITAT'

标签: sqlcase-when

解决方案


为什么不简化逻辑呢?

(CASE WHEN [Actual turn around time] > TAT THEN 'Over' 
      ELSE 'TEST'
 END) AS ITAT

您的代码中有一个放错位置的括号。

如果您想将逻辑限制为 的特定值TAT,则将条件扩展为:

(CASE WHEN [Actual turn around time] > TAT AND
           TAT IN (3, 7, 14, . . . )
      THEN 'Over' 
      ELSE 'TEST'
 END) AS ITAT

推荐阅读