Oracle的查询排序,增加总计列,或者增加总计行

最近基于公司的业务做报表的时候,很多场景都要用到排序查询和增加累加总价
1.排序查询
----查询排序,特定300-400行的数据
SELECT B.R,B.*  
   FROM (SELECT ROWNUM R, T.* FROM SYS_ACTIVECODE T WHERE ROWNUM <= 400  and t.USEDFLAG=0 and t.ACTCODE_TYPE=2D)       B WHERE B.R >= 300  AND B.R <= 400

如图:

2.按日期增加累计
---1.给转板增加数量总计,按日期
WITH T AS (
select work_order,QTY,CREATE_USER_ID,CREATE_TIME from smt_to_dip where work_order=WORK014084 order by CREATE_TIME 
)
SELECT T.work_order,t.CREATE_TIME,T.QTY, SUM(T.QTY) OVER(ORDER BY T.CREATE_TIME)
as 总计 FROM T

如图:

6.按箱号增加累计

如图:

4.可能我们在某些业务场景中还会遇见其他的问题,例如在你查询的数据总计一行总计
select decode (grouping(work_order)+grouping(CREATE_USER_ID)+grouping(qty),3,合计,work_order)work_order,
       decode (grouping(work_order)+grouping(CREATE_USER_ID)+grouping(qty),3,-,CREATE_USER_ID)CREATE_USER_ID,
       decode (grouping(work_order)+grouping(CREATE_USER_ID)+grouping(qty),3,-,qty)qty,
       sum(qty) from smt_to_dip where work_order=WORK014051
       group by rollup((work_order,CREATE_USER_ID,qty))

得到如图:

经验分享 程序员 微信小程序 职场和发展