jjo*_*150 3 sql oracle sql-order-by
如果这是一个简单的问题,我很抱歉.但是,我在大约一个小时内搜索了高低的答案.
我有一个db_table,我需要对输出到网页中的表进行排序.数据以下列方式存储在db_table中:
date Area Value
------ ------ -------
11-mar-18 middle 10
11-mar-18 bottom 5
11-mar-18 top 12
12-mar-18 top 14
12-mar-18 bottom 4
12-mar-18 middle 17
Run Code Online (Sandbox Code Playgroud)
问题是:我如何对它们进行排序以产生以下结果:
date Area Value
------ ------ -------
11-mar-18 top 12
11-mar-18 middle 10
11-mar-18 bottom 5
12-mar-18 top 14
12-mar-18 middle 17
12-mar-18 bottom 4
Run Code Online (Sandbox Code Playgroud)
任何帮助是极大的赞赏.
排序区域按字母顺序降序为订单的第二个组成部分:
select *
from db_table
order by "date", area desc;
Run Code Online (Sandbox Code Playgroud)
正如你所提到的,如果area有值A,B,C,D,并且他们希望按C,B,D,A的顺序排序,那么使用:
select *
from db_table
order by "date", decode(area,'C',1,'B',2,'D',3,'A',4);
Run Code Online (Sandbox Code Playgroud)
特别是PS,我把日期列放在引号内,因为已经创建了带有"date"列的表,而不是date作为关键字的不可能.
select *
from db_table
order by "date",
case
when area = 'top' then 1
when area = 'middle' then 2
when area = 'bottom' then 3
else 4
end;
Run Code Online (Sandbox Code Playgroud)
请参阅自定义排序顺序
| 归档时间: |
|
| 查看次数: |
456 次 |
| 最近记录: |