with D_USER_LOG as(
select '100' as userid,'账面为零' as state,to_date('2010-08-26','yyyy-mm-dd') as adddate from dual union all
select '100' as userid,'账面为零' as state,to_date('2010-08-25','yyyy-mm-dd') as adddate from dual union all
select '100' as userid,'账面为零' as state,to_date('2010-08-24','yyyy-mm-dd') as adddate from dual union all
select '100' as userid,'账面已充值' as state,to_date('2010-08-23','yyyy-mm-dd') as adddate from dual union all
select '100' as userid,'账面为零' as state,to_date('2010-08-22','yyyy-mm-dd') as adddate from dual union all
select '100' as userid,'账面为零' as state,to_date('2010-08-21','yyyy-mm-dd') as adddate from dual union all
select '101' as userid,'账面为零' as state,to_date('2010-08-26','yyyy-mm-dd') as adddate from dual union all
select '101' as userid,'账面为零' as state,to_date('2010-08-25','yyyy-mm-dd') as adddate from dual union all
select '101' as userid,'账面为零' as state,to_date('2010-08-24','yyyy-mm-dd') as adddate from dual union all
select '101' as userid,'账面已充值' as state,to_date('2010-08-23','yyyy-mm-dd') as adddate from dual union all
select '101' as userid,'账面为零' as state,to_date('2010-08-22','yyyy-mm-dd') as adddate from dual union all
select '101' as userid,'账面为零' as state,to_date('2010-08-21','yyyy-mm-dd') as adddate from dual)
select min(adddate), max(adddate), count(*),userid
from (select adddate + row_number() over(partition by state, userid order by adddate desc) rn,
d.*
from D_USER_LOG d
where state = '账面为零')
group by rn, userid having max(adddate) = trunc(sysdate -1)
不知道我这样写的对不对 |