oracle一个简单问题
时间:2011-11-24
来源:互联网
作者: zhongxingjun 发布时间: 2011-11-24
贴一些实例数据!
作者: cosio 发布时间: 2011-11-24
A 20111101
A 20111102
A 20111103
A 20111106
A 20111110
A 20111114
A 20111116
B 20111004
B 20111015
B 20111016
B 20111017
B 20111018
B 20111108
B 20111113
B 20111117
C 20110925
C 20110926
C 20110927
C 20110928
C 20110929
C 20111102
C 20111103
现在想实现这样的效果,如果一个病人连续三天有就诊记录,则把它统计出来,
作者: zhongxingjun 发布时间: 2011-11-24
结果数据显现是什么样子?
作者: cosio 发布时间: 2011-11-24
A 1
B 1
C 1
作者: zhongxingjun 发布时间: 2011-11-24
select t1.* from T t1,T t2,T t3 where t1.id=t2.id and t1.id=t3.id and Trunc(t1.time)+1=Trunc(t2.time) and Trunc(t1.time)+2=Trunc(t3.time); 试试
作者: chybin500 发布时间: 2011-11-24
select name, count(name) from (select b.name, min(b.time) Start_HM, max(b.time) End_HM from (select a.*, TO_NUMBER(a.time - rownum) cc from (select * from tab1 order by name, time) a) b group by b.name, b.cc) where TO_NUMBER(End_HM - Start_HM) >= 2 group by name
说明:name是病人姓名,time是number类型
作者: programmerxiaocai 发布时间: 2011-11-24
select name, count(name) from (select b.name, min(b.time) Start_HM, max(b.time) End_HM from (select a.*, TO_NUMBER(a.time - rownum) cc from (select * from tab1 order by name, time) a) b group by b.name, b.cc) where TO_NUMBER(End_HM - Start_HM) >= 2 group by name
作者: cosio 发布时间: 2011-11-24
作者: zhongxingjun 发布时间: 2011-11-24
select name,count(name) from (select b.name, min( to_number(to_char(b.time,'yyyymmdd'))) Start_HM, max( to_number(to_char(b.time,'yyyymmdd'))) End_HM from (select a.*, to_number(to_char(a.time,'yyyymmdd') - rownum) cc from (select * from tab1 order by name, time) a) b group by b.name, b.cc) where TO_NUMBER(End_HM - Start_HM) >=2 group by name转化一下
作者: programmerxiaocai 发布时间: 2011-11-24
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28