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

怎样给查询结果排序后加序号
想实现这样的功能:在按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这样排下去的~求解

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当然不会连续了  

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"