简体   繁体   English

CASE SQL语句中的比较符号“大于”

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM