日期:2014-05-17  浏览次数:21092 次

怎样给查询结果排序后加序号
想实现这样的功能:在按plan_code排序后,再按排序后的顺序给每一行加上行序1、2、3等,我用下面的语句,但是出来的序号成了这样
1 涂装 B20120306001  
3 涂装 B20120306002  
7 涂装 B20120306003  
2 总装 C20120306001  
6 总装 C20120306002  
4 总装 C20120306003  
5 总装 C20120306004  
8 总装 C20120306005 
而我想要的是1、2、3、4、5这样排下去的~求解
SQL code

select ROWNUM,"
            +"(case SUBSTR(PLAN_CODE,1,1) when 'A' then '焊装' when 'B' then '涂装' else '总装' end)state,"
            + "PLAN_CODE,PLAN_NAME,PLAN_MODEL,PLAN_BEGIN_DATE,PLAN_QUANTITY,PLAN_ONLINE_QUANTITY,PLAN_OFFLINE_QUANTITY,DDBH "
            +"from data_plan where PLAN_BEGIN_DATE=to_date('" + date2 + "','yyyy-mm-dd') order by plan_code"


------解决方案--------------------
因为rownum是子你查询的时候就已经生成了 然后按照plan_code排序 rownum当然不会连续了
SQL code

select ROWNUM,t1.* from "
            +"(select (case SUBSTR(PLAN_CODE,1,1) when 'A' then '焊装' when 'B' then '涂装' else '总装' end)state,"
            + "PLAN_CODE,PLAN_NAME,PLAN_MODEL,PLAN_BEGIN_DATE,PLAN_QUANTITY,PLAN_ONLINE_QUANTITY,PLAN_OFFLINE_QUANTITY,DDBH "
            +"from data_plan where PLAN_BEGIN_DATE=to_date('" + date2 + "','yyyy-mm-dd') order by plan_code) t1"