我有一个非常基本的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)
)
非常感谢任何想法!
答案 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)