DB2SQL:复制EXCEL中的IF-ELSE语句,并使用DB2SQL中的CASE语句

DB2SQL:复制EXCEL中的IF-ELSE语句,并使用DB2SQL中的CASE语句,excel,db2,Excel,Db2,我试图使用DB2SQL和CASE语句从Excel复制IF-ELSE语句。我的数据每行有4个日期,可以是日历年中的任何日期。在Excel中,这个公式工作得非常完美,但是,我在获取CASE语句以正确获得答案时遇到了问题 是否有人知道它的编码是否正确,或者是否有其他方法可以使用DB2SQL实现相同的结果 示例:我的问题我的日期是在Beg日期内还是在结束日期内? 条件: 开始日期:2010年1月1日E2 截止日期:2018年12月31日E3 我的日期:2018年8月22日E4 如果为空,则结束日期为空:

我试图使用DB2SQL和CASE语句从Excel复制IF-ELSE语句。我的数据每行有4个日期,可以是日历年中的任何日期。在Excel中,这个公式工作得非常完美,但是,我在获取CASE语句以正确获得答案时遇到了问题

是否有人知道它的编码是否正确,或者是否有其他方法可以使用DB2SQL实现相同的结果

示例:我的问题我的日期是在Beg日期内还是在结束日期内?

条件: 开始日期:2010年1月1日E2 截止日期:2018年12月31日E3 我的日期:2018年8月22日E4 如果为空,则结束日期为空:1900年1月1日E5 回答:如果真=1,则逻辑为1;不等于0 Excel公式: 如果(E3E5,如果(E3E4,0,1)),如果(E2>E4,0,1))

DB2 SQL代码

(CASE WHEN E3  <> E5    
      THEN (CASE WHEN E3 <= E4  
                 THEN '0'   
                 ELSE (CASE WHEN E2 > E4    
                            THEN '0'    
                            ELSE '1' END)  END) 
      ELSE (CASE WHEN E2 > E4   
                 THEN '0'   
                 ELSE '1' END)  END)
(E3 E5时的情况)
然后(E3 E4时的情况)
然后是“0”
否则“1”结束)结束)
ELSE(E2>E4时的情况)
然后是“0”
否则“1”结束)结束)

您是否将日期存储为数据类型?如果已将它们存储为字符串,则比较将按字母顺序进行,例如,
“8/22/2018”
将大于“
12/31/2018
”,因为字符集中的8位于1之后

另外,我不确定“if Blank r Null”是什么意思,但可以使用COALESCE将
Null
标记转换为要在比较中使用的值

您还可以简化
案例
语句。例如,参见下面的第二个结果栏

SELECT (CASE WHEN E3  <> E5    
      THEN (CASE WHEN E3 <= E4
                 THEN '0'   
                 ELSE (CASE WHEN E2 > E4    
                            THEN '0'    
                            ELSE '1' END)  END) 
      ELSE (CASE WHEN E2 > E4   
                 THEN '0'   
                 ELSE '1' END)  END) AS RESULT
,   CASE WHEN E2 > E4 OR ( E3  <> E5 AND E3 <= E4) THEN 0 ELSE 1 END
       AS SIMPLER
FROM 
TABLE(VALUES (DATE('2010-1-1'), DATE('2018-12-31'),DATE('2018-8-22'), DATE('1900-1-1'))
                ) AS V(E2,E3,E4,E5)
选择(E3 E5时的情况)
然后(E3 E4时的情况)
然后是“0”
否则“1”结束)结束)
ELSE(E2>E4时的情况)
然后是“0”
否则“1”结束)结束)作为结果

,CASE WHEN E2>E4或(E3 E5和E3逻辑对我来说似乎很好,但是我在DB2代码中没有看到任何空检查,比如WHEN IFNULL(E3,'1900-01-01)IFNULL(E5,'1900-01-01)你能格式化你的条件吗?这样就可以告诉我哪个单元格是哪个值吗?我不确定E2是“开始日期:1/1/2010”还是“截止日期:2018年12月31日”