字段:
sid,sname,dTime,sDoSome结果:
需要查询出同一sname按dTime(时间先后顺序)最近连续3次sDoSome字段为空的记录我粗俗的思维是:
想按sname分组,然后用dTime来排序,但是最近连续3次为空这个怎么判断啊?求大侠们指点迷津了
想了整整一天
sid,sname,dTime,sDoSome结果:
需要查询出同一sname按dTime(时间先后顺序)最近连续3次sDoSome字段为空的记录我粗俗的思维是:
想按sname分组,然后用dTime来排序,但是最近连续3次为空这个怎么判断啊?求大侠们指点迷津了
想了整整一天
解决方案 »
- 一个查询语句,需要过滤掉对应多个字段的重复记录。求指教
- sql语句问题
- 怎样调用在oracle客户端写的函数????
- 触发器的效率问题
- 怎样用一个SQL执行包中的存储过程
- 请教怎样用plsql将select出来的纪录存成一个文件?
- 谁能提供oracle provider for ole db别的下载地址, 我在oracle网站就是下不了,,
- 如何读取Oracle中较长的BLOB字段,存到一个文件中去?急!!!
- 小妹求救,HELP,怎样写一个PL/SQL函数在ORACLE7里存储和读取图片
- ####### Oracle中如何设置SYSDBA用户,在线等待! #######
- 怎样显示条件以外的内容!!!!
- 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是空的话就筛选出来