拿个业务场景说这个案例,比如我们有个表里面可能有批改过的数据,批改过得数据不会随着新批改的数据覆盖,而是逐条插入表中,如果想找出包含最早批改的数据和最新批改数据的话,那么我们就需要用到了havinng 用法,假设最开始的批单号是000,批单号是累加的
比如我们有个表 table 表里面有两个字段 订单号(order_no) 和 批单号(endorseq_no)
那么写法就是
sql
select order_no
from table
group by order_no
having sum(case when endorseq_no = '000' then 1
else 0 end) >= 1 --这个是判断必须包含最初的批单
and count(*) >= 2 --这个是判断除了最初的批单之外还需要有新批改的批单