Nếu bạn đang cố gắng sắp xếp một nhóm ngày theo ngày trong tuần, với Thứ Bảy là ngày đầu tiên, thì hãy cân nhắc sắp xếp theo một ngày đã sửa đổi:
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
Nhược điểm là nó không trực quan lắm, vì vậy hãy thêm nhận xét mã nếu bạn sử dụng phương pháp này.
Chỉnh sửa:Nơi bạn có một danh sách các số, hãy sắp xếp theo một câu lệnh trường hợp có chuyển đổi danh sách:
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
... hoặc nhỏ gọn hơn, nhưng không trực quan:
case
when day <= 5 then day + 2
else day - 5
end
order by case