Jika Anda mencoba mengurutkan serangkaian tanggal menurut hari dalam seminggu, dengan hari Sabtu sebagai yang pertama, maka pertimbangkan untuk memesan menurut tanggal yang diubah:
create table t1(my_date date);
insert into t1
select trunc(sysdate)+rownum
from dual
connect by level <= 20
select
my_date,
to_char(my_date,'Day'),
to_char(my_date,'D')
from
t1
order by
to_char(my_date + 1,'D');
http://sqlfiddle.com/#!4/5940b/3
Kelemahannya adalah tidak terlalu intuitif, jadi tambahkan komentar kode jika Anda menggunakan metode ini.
Sunting:Jika Anda memiliki daftar angka, urutkan berdasarkan pernyataan kasus dengan salah satu konversi daftar:
case day
when 1 then 3
when 2 then 4
when 3 then 5
when 4 then 6
when 5 then 7
when 6 then 1 -- saturday
when 7 then 2
end
... atau yang lebih ringkas, tetapi tidak seintuitif:
case
when day <= 5 then day + 2
else day - 5
end
order by case