SQL Where子句 - 缩写多个日期代码的方法?

时间:2018-06-04 16:12:24

标签: sql sql-server where

我有一个非常基本的where子句 - 它意味着在最近的处理日收到42天后的贷款,与之前的处理日相比。我已经发现我需要收到过去175天的贷款,但是贷款还有超过175天或350(175 x 2),525,700等等......这是部分我目前的where子句有三个日期间隔,但从字面上看,它应该超过它(在175个日期间隔),但在键入所有这些额外的175天增量之前,我认为必须有一个更简洁的方式来指定至少在350天之后的175天增量:

  Where
  ( 
     (ISNULL(li.PDDAYSREG,0) >= 42  
  and ISNULL(ld.PDDAYSREG,0) <  42) 
  or 
     (ISNULL(li.PDDAYSREG,0) >= 175
  and ISNULL(ld.PDDAYSREG,0) <  175)
  or 
     (ISNULL(li.PDDAYSREG,0) >= 350
  and ISNULL(ld.PDDAYSREG,0) <  350)
  )

非常感谢任何想法!

1 个答案:

答案 0 :(得分:0)

你为什么不这样做呢?

where PDDAYSREG = 42 or
      (PDDAYSREG % 175 = 0 and PDDAYSREG > 0)

大多数数据库支持mod()作为函数或使用%运算符。

如果该值不是整数,我建议将其转换为1而不是使用范围:

where cast(PDDAYSREG as int) = 42 or
      (cast(PDDAYSREG as int) % 175 = 0 and PDDAYSREG > 0)