在查询SQL语句中用到的排序语句:
OVER(ORDER BY A.STATUS_SORT DESC, A.TOP_DATE DESC, A.SUB_DATE DESC)
先说一下各个字段对应的名称:
A.STATUS_SORT:是置顶,当数据库中有置顶的内容就按这个排序(只有一个置顶); 
A.TOP_DATE:当数据库中有几个置顶,但是要按最新置顶的时间排序(最新置顶放在最前面); 
A.SUB_DATE:当数据库中没有置顶的内容就按这个时间排序;
现在出现的问题是数据库中没有置顶的内容时,应该按A.SUB_DATE来排序的,但是现在是按A.TOP_DATE来排序了,A.SUB_DATE好像失效了,请高手指教一下,是不是不能这样用呢!!

解决方案 »

  1.   

    也许是因为其他非置顶记录的置顶时间为NULL的缘故,你试一试用NVL转换一下置顶时间字段,如果为空,那么统一等于一个最小的时间,例如:NVL(a.top_date,to_date('19700101','YYYYMMDD')) top_date
      

  2.   

    谢谢楼上的 我的置顶时间不是null
      SUB_DATE         STATUS_SORT  TOP_DATE2008-5-16 7:42:49 0 2008-5-16 7:42:49
    2008-5-16 8:03:48 0 2008-5-16 8:03:48
    2008-6-13 14:14:22 0 2008-6-13 14:14:22
    2008-5-13 12:31:33 0 2008-6-20 8:41:20
    2008-5-9 16:33:55 0 2008-6-20 8:42:43
    上面是三个字段对应的值 STATUS_SORT=1 就是置顶 TOP_DATE是置顶以后按这个时间排序 当没有置顶就按SUB_DATE的时间来排序
      

  3.   

    order by A.STATUS_SORT DESC,decode(A.STATUS_SORT,1,A.TOP_DATE,SUB_DATE) desc
      

  4.   

    谢谢hebo2005  我试了 可以实现!谢谢!!