假设某个数据库有10个时间字段,字段中内容都可以允许为空,现在我想按字段不为空数最少,同列的时间最近来进行排列显示,这个procedure怎么写

解决方案 »

  1.   

    我简化了很多了,要是说这个表有200列不到怕你吃不消,不知道以前哪个人设计的
    现在就当这个表为X,有A,B,C,D,E,F,G,H,I,J类型为date的10列,字段都允许为空值,再细点,我确定给出10跳数据
    2011-2-28,2011-3-1,2011-3-2,2011-3-3,2011-3-4,2011-3-5,2011-3-6,2011-3-7 2011-3-8,2011-3-9
    2011-2-27,2011-2-28,2011-3-1,2011-3-2,2011-3-3,2011-3-4,2011-3-5,2011-3-6,2011-3-7
    2011-2-26,2011-2-27,2011-2-28,2011-3-1,2011-3-2,2011-3-3,2011-3-4,2011-3-5
    2011-2-25,2011-2-26,2011-2-27,2011-2-28,2011-3-1,2011-3-2,2011-3-3,2011-3-3
    2011-2-24,2011-2-25,2011-2-26,2011-2-27,2011-2-28,2011-3-1
    2011-2-23,2011-2-24,2011-2-25,2011-2-26,2011-2-27,2011-2-27
    2011-2-22,2011-2-23,2011-2-24,2011-2-25
    2011-2-21,2011-2-22,2011-2-23
    2011-2-20,2011-2-21
    2011-2-19
    按照每行数据中列不为空最少的字段从大到小,不为空数目相同的行再按照没列时间最近的从大到小
      

  2.   

    --这样试试
    select *
    from X
    order by A desc nulls last,
             B desc nulls last,
             C desc nulls last,
             D desc nulls last,
             E desc nulls last,
             F desc nulls last,
             G desc nulls last,
             H desc nulls last,
             I desc nulls last,
             J desc nulls last
      

  3.   

    order by decode(col1,null,0,1)+...+decode(col10,null,0,1)