Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle SQL sortiert Wochentage nach aktuellem Tag

Wenn Sie versuchen, eine Reihe von Daten nach Wochentagen zu sortieren, wobei Samstag der erste ist, sollten Sie die Sortierung nach einem geänderten Datum in Erwägung ziehen:

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

Der Nachteil ist, dass es nicht sehr intuitiv ist, fügen Sie also einen Codekommentar hinzu, wenn Sie diese Methode verwenden.

Bearbeiten:Wenn Sie eine Liste mit Zahlen haben, bestellen Sie nach einer Fallanweisung mit einer Listenumwandlung:

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

... oder die kompaktere, aber nicht so intuitive:

case
  when day <= 5 then day + 2
  else               day - 5
end

order by case