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

解决方案 »

  1.   

    greatest(申请日期,决定日期,处理日期)这是取三个字段最新日期的
    至于检索条件嘛可以用greatest(申请日期,决定日期,处理日期) between to_date('20050101','yyyymmdd')
    and to_date('20080101','yyyymmdd')不过这样会让这些字段上的索引失效(假设有索引)
      

  2.   

    楼上不说,我还没注意到,居然是用NUMBER型的
    不会存为日期型的啊,全部取整不就行了啊
      

  3.   

    数字型的要这样了
    greatest(申请日期,决定日期,处理日期) between 20050101 and 20080101 
      

  4.   

    谢谢楼上各位,不过有个新问题,我试验了下,当其中莫个字段为NULL的时候,就检索不出来啊?
      

  5.   

    decode一下就可以了 
    类似如下:
    SELECT greatest(decode(n,NULL,0,n),decode(m,NULL,0,m)) x FROM test;
      

  6.   

    greatest(nvl(申请日期,0),nvl(决定日期,0),nvl(处理日期,0)) between 20050101 and 20080101