当在用case when 进行多条件处理时,首先case when的处理是惰性的,对买一行,如果判断出一个符合条件,为真, 就进行处理, 就不再往下进行判断。
case when condition 1 then 1 # 每行, 如果condition 1为真, 则处理为1, 不再继续判断 condition 2, 另外condition 1 和condition 2 的判断关键词可以不同。
when condition 2 then 2
when condition 3 then 3
else 4 end
案例
处理后的结果是:
本来的意思是如果zxjtp=20101010 并且date_various =10 的时候 start 为零, 剩下的如果date_various 为1的时候就是零, 如果写成上面的方式无法满足需求,因为把date_various>1 前面没有为真的判断, 因此不执行。
处理后的结果是
满足了需求, 这里面涉及到出现的次序等。