升序 降序 同时应用于 同一字段
今天群里一朋友问了个变态问题
(2006-12-21 11:13:14)
假设我现在有一个表A
ID字段 从1到10
现在我想前5条记录降序 后5条记录升序
象这样
5
4
3
2
1
6
7
8
9
10
不知道这样的SQL语句如何写 请大家帮帮忙
谁帮我一下啊
========================================================
这个需求比较变态,不过想了想还是可以解决的
作测试表如下
SQL> select * from info;
THENUM
----------
1
2
3
4
5
6
7
8
9
10
11
THENUM
----------
12
13
14
15
16
解答如下:
1 select thenum,sign(thenum-6),abs(thenum-6) from info group by thenum
2* order by sign(thenum-6),abs(thenum-6)
SQL> /
THENUM SIGN(THENUM-6) ABS(THENUM-6)
---------- -------------- -------------
5 -1 1
4 -1 2
3 -1 3
2 -1 4
1 -1 5
6 0 0
7 1 1
8 1 2
9 1 3
10 1 4
11 1 5
12 1 6
13 1 7
14 1 8
15 1 9
16 1 10
一开始想用比较复杂的分析函数,在纸上写了写后觉得用普通的函数就可以实现。所以,有些ORACLE提供的函数可能很少用到,但是作为知识储备应该知道有哪些功能的函数存在以便在需要的时候查找使用。
阅读(665) | 评论(0) | 转发(0) |