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))
得到如图:
