如何在同一条数据中选日期最新的字段的值?在线急等!!!!!!
例:表A,在同一行中,比较申请日期,决定日期,处理日期三个字段(都是NUMBER,8),选取日期最新的,并且在范围区间(大于20050101,小于等于20080101)的当作检索条件,该如何写?
请帮忙,谢谢!!~
------解决方案--------------------greatest(申请日期,决定日期,处理日期)这是取三个字段最新日期的
至于检索条件嘛可以用
greatest(申请日期,决定日期,处理日期) between to_date('20050101','yyyymmdd')
and to_date('20080101','yyyymmdd')
不过这样会让这些字段上的索引失效(假设有索引)
------解决方案--------------------发现两个问题:
1。为什么总有表的设计人员喜欢用字符串、数字代替日期那?存在潜在的效率问题。
2。业务上应该是,先申请,再决定、再处理吧。难道可以乱来。
------解决方案--------------------decode一下就可以了
类似如下:
SELECT greatest(decode(n,NULL,0,n),decode(m,NULL,0,m)) x FROM test;
------解决方案--------------------greatest(nvl(申请日期,0),nvl(决定日期,0),nvl(处理日期,0)) between 20050101 and 20080101