a 列 是什么类型的 char?

解决方案 »

  1.   

    一月,二月这些都无法正确排序,太难写了
    如果a是用int代表月份的话还可以变通解决一下create table tb2
    (a int,
    b int);
    insert into tb2 values(1, 10);
    insert into tb2 values(2, 10);
    insert into tb2 values(3, 10);
    insert into tb2 values(4, 10);
    insert into tb2 values(5, 20);
    insert into tb2 values(6, 30);select m,b from 
    (select a,a||'月' m,b from tb2
    union all
    select a+0.5,a||'月累计',sum(b) over (order by a) from tb2) order by a;
      

  2.   

    select a,b from tab
    union
    select '累计',sum(b) over(order by a) from tab排序比较难
      

  3.   

    排序也不难
    用decode创建inline view即可
    问题在于表结构的设计上没有考虑到查询的问题
    那又何必非得用一个select来实现复杂查询呢?
    典型的自讨苦吃
      

  4.   

    a是char(6), 比如:200311,200301
      

  5.   

    就一年的数据吗?,是的话就用下面的,如果有多年的,你在中间的select加上时间条件就行了
    select m,b from 
    (select a,a m,b from tb2
    union all
    select a||'0','累计',sum(b) over (order by a) from tb2) order by a;