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
我想在 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