[英]Comparison sign 'greater than' in CASE SQL Statement
I want to do comparison within a case statement. 我想在案例陈述中进行比较。 I've tried: 我试过了:
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
Any help would be appreciated. 任何帮助,将不胜感激。
CASE WHEN DATEDIFF(MONTH, rs.MaturityDateID, rs.PaymentDateID) > 1
AND DATEDIFF(MONTH, rs.MaturityDateID, rs.PaymentDateID) < 2
THEN 1
ELSE 0
END AS OneMonthDelay
which makes by the way no sense ( >1 <2
) 这顺便说不通( >1 <2
)
Their point is INTEGERS are whole numbers. 他们的观点是整数是整数。 Therefore, nothing is ever GREATER than 1 AND SMALLER than 2, but there is EQUAL TO OR GREATER/LESS logic. 因此,没有什么比1更大,比2更小,但是存在等于或大于/小于/等于逻辑。 If an item is to be GREATER than 1 but SMALLER than 2, it has to be a something like a decimal (1.1, 1.2, 1.201...) 如果某项大于1但小于2,则它必须是类似于小数的东西(1.1、1.2、1.201 ...)
Based off of your logic: 根据您的逻辑:
LOGIC: >1 <2
INPUT: 1
RESULT: 0
Because 1 is not GREATER than 1 AND LESS than 2. 1 is EQUAL to 1, but 1.01 is GREATER than 1 因为1不大于1且小于2。1等于1,但1.01大于1
LOGIC => 1 =< 2
INPUT: 1
RESULT: 1
Alternatively, I think you can do (someone might have to correct me on this) 或者,我认为您可以做到(可能有人需要对此进行纠正)
EDIT: 编辑:
Using juergen d's logic (Final edit, this should work): 使用juergen d的逻辑(最终编辑,这应该可以工作):
CASE WHEN DATEDIFF(MONTH, rs.MaturityDateID, rs.PaymentDateID)
BETWEEN 1 AND 2
THEN 1
ELSE 0
END AS OneMonthDelay
Your whole query should look like: 您的整个查询应如下所示:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.