首页 > 解决方案 > 逾期 -10 表示逾期 10 分钟。将“-10”交换为逾期 10 分钟

问题描述

CASE WHEN Color LIKE '%RED%' THEN (10 - (DATEDIFF(MINUTE,Calltime,GETDATE()))) 

有时可能会给出 -10 的值。我的问题是当我得到一个 <0 的值时,我怎样才能将该值更改为逾期 10 分钟。

标签: sqlsql-servertsqlcase-when

解决方案


您可以嵌套 CASE 语句,但由于您现在将文本引入整数值,因此您必须将所有输出转换为字符串:

CASE WHEN Color LIKE '%RED%' THEN
    CASE WHEN (10 - (DATEDIFF(MINUTE,Calltime,GETDATE()))) >= 0 THEN CAST((10 - (DATEDIFF(MINUTE,Calltime,GETDATE()))) AS VARCHAR(MAX))
    ELSE CAST(ABS((10 - (DATEDIFF(MINUTE,Calltime,GETDATE())))) AS VARCHAR(MAX)) + ' minutes overdue'
    END
ELSE -- Additional SQL for when color is not red
END

推荐阅读