oracle添加序号列3种方法大全

场景:oracle在展示数据时,用户需要看到当前记录数,添加序号即可,适用于表格导出。

方式一:添加xh字段

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
SELECT
    fxh,
    fmc,
    round( ( sum( fczsrbnljzxs ) - sum( fczsrsntqs ) ) / 10000, 2 ) AS 增减额
    ,
    round( sum( fczsrbnljzxs ) / 10000, 2 ) AS 财政收入
    ,
    round( sum( fczsrbsn ), 2 ) AS 增减幅度
    ,
    f_sys_year
FROM
    zhzs_bill_qqczsrfjwcqk
WHERE
    f_sys_year = '2021'
    AND f_sys_month = '12'
GROUP BY
    fxh,
    fmc,
    f_sys_year
ORDER BY
    to_number( fxh )

效果图:

SQL解读:此条在select后添加xh,group by后添加xh分组,以及用order by排序,to_number(xh)将其转为数值型即可

方式二:oracle自带

1
2
3
4
5
6
7
8
9
10
select ROWNUM as fxh,a.* from (
SELECT  fmc
    , round((sum(fczsrbnljzxs) - sum(fczsrsntqs)) / 10000, 2) AS 增减额
    , round(sum(fczsrbnljzxs) / 10000, 2) AS 财政收入
    , round(sum(fczsrbsn), 2) AS 增减幅度
    , f_sys_year
FROM zhzs_bill_qqczsrfjwcqk
WHERE f_sys_year = '2021'
    AND f_sys_month = '12'
GROUP BY fmc, f_sys_year ) a

效果图

SQL解读:此方法使用自带的ROWNUM函数,简单方便,oracle独有

方式三:row_number()函数

1
2
3
4
5
6
7
8
9
SELECT  row_number() over(order by fmc) as xh,fmc
    , round((sum(fczsrbnljzxs) - sum(fczsrsntqs)) / 10000, 2) AS 增减额
    , round(sum(fczsrbnljzxs) / 10000, 2) AS 财政收入
    , round(sum(fczsrbsn), 2) AS 增减幅度
    , f_sys_year
FROM zhzs_bill_qqczsrfjwcqk
WHERE f_sys_year = '2021'
    AND f_sys_month = '12'
GROUP BY fmc, f_sys_year

效果图

SQL解读:此方法通用(mysql也可以使用)

附:Oracle使用row_number()函数查询时增加序号列

使用Oracle自带的row_number()函数能够实现自动增加序号列的要求,但是同时引发一个问题,如果我们查询出来的数据需要使用Order By排序的话,那么我们会发现新增加的序号列是乱序的,它会根据我们Order By后面的字段重新排序,那么怎么解决这一问题呢。

很简单,我们再加上根据Order By排序就可以了。

1
2
3
4
5
select row_number() over(ORDER BY t.taskcreatetime),
t.ACTIVITYNAME,
t.TASKTYPE
from t_sys_flow_task t
ORDER BY t.taskcreatetime;

查询结果如下:

总结

到此这篇关于oracle添加序号列3种方法的文章就介绍到这了,更多相关oracle添加序号列内容请搜索IT俱乐部以前的文章或继续浏览下面的相关文章希望大家以后多多支持IT俱乐部!

本文收集自网络,不代表IT俱乐部立场,转载请注明出处。https://www.2it.club/database/oracle/10497.html
上一篇
下一篇
联系我们

联系我们

在线咨询: QQ交谈

邮箱: 1120393934@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部