字段:
sid,sname,dTime,sDoSome结果:
需要查询出同一sname按dTime(时间先后顺序)最近连续3次sDoSome字段为空的记录我粗俗的思维是:
想按sname分组,然后用dTime来排序,但是最近连续3次为空这个怎么判断啊?求大侠们指点迷津了
想了整整一天
sid,sname,dTime,sDoSome结果:
需要查询出同一sname按dTime(时间先后顺序)最近连续3次sDoSome字段为空的记录我粗俗的思维是:
想按sname分组,然后用dTime来排序,但是最近连续3次为空这个怎么判断啊?求大侠们指点迷津了
想了整整一天
解决方案 »
- oracle存储过程
- UPDATE 循环问题
- 请用java写一个关联分析算法和用存储过程写那个效率高啊
- oracle存取小于1的小数,为什么是没有零
- oracle9i,字符串很长的情况下,用什么数据类型?
- 问下oracle 9i 的客户端和 oracle 10g 的客户端是一样的吗?(急)
- ora-00054:资源正忙,要求指定NOWAIT
- oracle里如何判断某个表已经存在?
- 请教 Oracle Portal WebClipping Portlet 错误
- 求大神指导ORA-00905: 缺失关键字,哪里错了呀?
- 怎样显示条件以外的内容!!!!
- Oracle Timesten和Coherence区别
SELECT DISTINCT sname
FROM
(select sname,sDoSome , lag(sDoSome ,1) over(partition by snameorder by dTime) one,lag(sDoSome ,2) over(partition by sname order by dTime) two
from (SELECT ROW_NUMBER() OVER(PARTITION BY snameORDER BY dTime) RN,TEST.* FROM TEST)
where RN>1)
WHERE (sDoSome IS NULL) AND (ONE IS NULL) AND (TWO IS NULL)
语句没有调试,可能存在问题,但大体 意思就是上面所说:
select sid, sname, count(*) from
(select sid,sname,sDoSome,row_number()(partition by sname order by dtime desc) r
from table
where r<=3)
where sDoSome is null
group by sid,sname having count(*)=3;
cheng_fengming :
如果单单是为空倒是很好办 但是是3次并且是连续的 就不好弄了!RE: 确实,哈哈,我脑子不太好使---------------------------------------------randy_ideal:
不是很明白楼主的意图,能举例说明吗?RE: 就是如果相同sname有最近3次(按dTime)记录doSome是空的话就筛选出来