如何在同一条数据中选日期最新的字段的值?在线急等!!!!!!

z_x_z 2008-07-14 02:47:38
例:表A,在同一行中,比较申请日期,决定日期,处理日期三个字段(都是NUMBER,8),选取日期最新的,并且在范围区间(大于20050101,小于等于20080101)的当作检索条件,该如何写?

请帮忙,谢谢!!~
...全文
186 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
luyuen 2008-07-14
  • 打赏
  • 举报
回复
greatest(nvl(申请日期,0),nvl(决定日期,0),nvl(处理日期,0)) between 20050101 and 20080101
oracledbalgtu 2008-07-14
  • 打赏
  • 举报
回复
decode一下就可以了
类似如下:
SELECT greatest(decode(n,NULL,0,n),decode(m,NULL,0,m)) x FROM test;

[Quote=引用 7 楼 z_x_z 的回复:]
谢谢楼上各位,不过有个新问题,我试验了下,当其中莫个字段为NULL的时候,就检索不出来啊?
[/Quote]
z_x_z 2008-07-14
  • 打赏
  • 举报
回复
谢谢楼上各位,不过有个新问题,我试验了下,当其中莫个字段为NULL的时候,就检索不出来啊?
hebo2005 2008-07-14
  • 打赏
  • 举报
回复
数字型的要这样了
greatest(申请日期,决定日期,处理日期) between 20050101 and 20080101
hebo2005 2008-07-14
  • 打赏
  • 举报
回复
楼上不说,我还没注意到,居然是用NUMBER型的
不会存为日期型的啊,全部取整不就行了啊
dbcxbj 2008-07-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hebo2005 的回复:]
greatest(申请日期,决定日期,处理日期)这是取三个字段最新日期的
至于检索条件嘛可以用

greatest(申请日期,决定日期,处理日期) between to_date('20050101','yyyymmdd')
and to_date('20080101','yyyymmdd')

不过这样会让这些字段上的索引失效(假设有索引)
[/Quote]
z_x_z 2008-07-14
  • 打赏
  • 举报
回复
回复楼上的,表不是我设计的,决定权不在我这,我只是举个例子而已,实际上并不一定是这三个名字,不过谢谢的关注,不知能否给点思路?
oracledbalgtu 2008-07-14
  • 打赏
  • 举报
回复
发现两个问题:
1。为什么总有表的设计人员喜欢用字符串、数字代替日期那?存在潜在的效率问题。
2。业务上应该是,先申请,再决定、再处理吧。难道可以乱来。

[Quote=引用楼主 z_x_z 的帖子:]
例:表A,在同一行中,比较申请日期,决定日期,处理日期三个字段(都是NUMBER,8),选取日期最新的,并且在范围区间(大于20050101,小于等于20080101)的当作检索条件,该如何写?

请帮忙,谢谢!!~
[/Quote]
hebo2005 2008-07-14
  • 打赏
  • 举报
回复
greatest(申请日期,决定日期,处理日期)这是取三个字段最新日期的
至于检索条件嘛可以用

greatest(申请日期,决定日期,处理日期) between to_date('20050101','yyyymmdd')
and to_date('20080101','yyyymmdd')

不过这样会让这些字段上的索引失效(假设有索引)

17,381

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧