CASE SQL 语句中的比较符号 'greater than'

Comparison sign 'greater than' in CASE SQL Statement

我想在 case 语句中进行比较。 我试过:

CASE DATEDIFF(MONTH, rs.MaturityDate, rs.PaymentDate) >1 AND <2 THEN 1 ELSE 0 END AS OneMonthDelay
,CASE DATEDIFF(MONTH, rs.MaturityDate, rs.PaymentDate) >2 AND <3 THEN 1 ELSE 0 END AS TwoMonthDelay

如有任何帮助,我们将不胜感激。

CASE WHEN DATEDIFF(MONTH, rs.MaturityDateID, rs.PaymentDateID) > 1  
      AND DATEDIFF(MONTH, rs.MaturityDateID, rs.PaymentDateID) < 2 
     THEN 1 
     ELSE 0 
END AS OneMonthDelay

顺便说一句,这毫无意义 (>1 <2)

他们的观点是 INTEGERS 是整数。因此,没有什么是大于 1 和小于 2 的,但是存在 EQUAL TO OR GREATER/LESS 逻辑。如果一个项目大于 1 但小于 2,则它必须是小数点 (1.1, 1.2, 1.201...)

根据您的逻辑:

LOGIC: >1 <2
INPUT: 1
RESULT: 0

因为 1 不大于 1 且小于 2。1 等于 1,但 1.01 大于 1

LOGIC => 1 =< 2 
INPUT: 1
RESULT: 1

或者,我认为你可以这样做(可能需要有人纠正我)

编辑:

使用 juergen d 的逻辑(最终编辑,这应该有效):

CASE WHEN DATEDIFF(MONTH, rs.MaturityDateID, rs.PaymentDateID)
BETWEEN 1 AND 2    
THEN 1 
ELSE 0 
END AS OneMonthDelay

您的整个查询应如下所示:

SELECT CASE 
WHEN DATEDIFF(MONTH, rs.MaturityDateID, rs.PaymentDateID)
BETWEEN 1 AND 2    
THEN 1 
ELSE 0
END AS OneMonthDelay,
CASE WHEN
DATEDIFF(MONTH, rs.MaturityDateID, rs.PaymentDateID)
BETWEEN 2 AND 3
THEN 1
ELSE 0
END AS TwoMonthDelay
FROM FooTable