select project from tablename order by case project when '合计' then 0 end desc;
project 1基建项目 基建项目小计 2城建项目 城建项目小计 项目 项目小计 合计 想达到如上效果, order by case project when '合计' then 0 end desc; 是可以让合计在最下面,可是别的project就会乱掉了, 希望是按project排序后,合计在最后
这样应该可以吧,没有环境,楼主试试吧 select 字段 from tab_1 where 字段project <> “合计” union all select 字段 from tab_1 where 字段project = “合计”
这些值本来就是union起来的 分三部分 project, project||小计, 合计
那你改成 order by case project when '合计' then 9999 end 这样你应该不可能会有9999个吧!这样应该在最后面了!
那好像就更容易了啊,把union换成union all 应该就可以了吧。但是有一点要注意,你的业务上有没有重复数据,union all是不能去掉重复行的。union和union all的区别如下:Union,对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
Union All,对两个结果集进行并集操作,包括重复行,不进行排序;
Order by decode(project,'合计',1,0) ,project 先把值为合计的行放到下面,再按项目排序。
order by case project
when '合计' then 0 end desc;
1基建项目
基建项目小计
2城建项目
城建项目小计
项目
项目小计
合计
想达到如上效果,
order by case project
when '合计' then 0 end desc;
是可以让合计在最下面,可是别的project就会乱掉了,
希望是按project排序后,合计在最后
select 字段
from tab_1
where 字段project <> “合计”
union all
select 字段
from tab_1
where 字段project = “合计”
这些值本来就是union起来的 分三部分 project, project||小计, 合计
那你改成
order by case project
when '合计' then 9999 end 这样你应该不可能会有9999个吧!这样应该在最后面了!
那好像就更容易了啊,把union换成union all 应该就可以了吧。但是有一点要注意,你的业务上有没有重复数据,union all是不能去掉重复行的。union和union all的区别如下:Union,对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
Union All,对两个结果集进行并集操作,包括重复行,不进行排序;
先把值为合计的行放到下面,再按项目排序。