一月,二月这些都无法正确排序,太难写了 如果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;
select a,b from tab union select '累计',sum(b) over(order by a) from tab排序比较难
就一年的数据吗?,是的话就用下面的,如果有多年的,你在中间的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;
如果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;
union
select '累计',sum(b) over(order by a) from tab排序比较难
用decode创建inline view即可
问题在于表结构的设计上没有考虑到查询的问题
那又何必非得用一个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;