oracle排序查询怎么取上一条记录 怎么查询oracle中最后几条的数据?

[更新]
·
·
分类:互联网
2051 阅读

oracle排序查询怎么取上一条记录

怎么查询oracle中最后几条的数据?

怎么查询oracle中最后几条的数据?

说一个可能的办法,不过最好不要用,估计能慢到吓人。
嵌套查询,select * from( select * from(select rownum num_row,其他字段 from a)b order by num_row desc) where rownum
首先标识rownum列,然后取一个别名(必须),因为rownum必须是从1开始,所以必须取一个别名,然后按照倒叙排列,排列后最后几条就在前面了,你想查询几就再写一个rownum
上面的查法很麻烦,应该还有比较简单的查法,也想到了另一种可能,不过需要测试,这里没有测试环境,所以剩下的你自己慢慢考虑吧,我估计大概的意思应该就是这样的。利用rownum。

Oracle多行转多列及TO_NUMBER(varchar2)排序问题?

首先你的size_no直接排序我不知道是按照什么排列的,因为你的size_no中存在#,所以是不可能转为number的。如果想利用number排序那么我建议用instr确定#的位置,然后用substr截取,截取后的值,再to_number进行排序。
至于转为三行那个,个人建议用rownum去做,先按照上面的方式排序,排序后用rownum标注行号,然后用行号-1,然后用行号去除以8,标出整除部分和余数。
可以到的:
rownum-1 整除部分得数 余数 size_no
0 0 0
1 0 1
2 0 2
。。。。。
7 0 7
8 1 0
9 1 1
10 1 2
........
18 2 2
19 2 3
而后利用余数部分进行case when(也就是列转行的工作),利用整除部分得数进行分组,这样就可以得到你要的那种结果了。

Oracle分析函数RANK()?

rank是oracle分析函数中的一个,主要用法是rank()over(partiton by XX orader by ZZ desc)(分组排序序号)一般用来分组排序,与group by XX order by ZZ 不同的是,它并不影响现有数据。
比如:xx zz1 21 31 42 22 6那么select xx,zz,rank()over(partiton by XX orader by ZZ ) aa from table的结果为xx zz aa1 2 11 3 21 4 32 2 12 6 2partition by可不写,这样就是全局排序,与order by的排序结果相同,只是会存在序号还有其他用法,而且还有很多分析函数,这个可以上网找找,oracle分析函数,里面的例子好多,希望对你有帮助。