Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle sql ordina i giorni della settimana in base al giorno corrente

Se stai cercando di ordinare una serie di date per giorno della settimana, con il sabato come primo, considera di ordinare in base a una data modificata:

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

Lo svantaggio è che non è molto intuitivo, quindi aggiungi un commento al codice se usi questo metodo.

Modifica:dove hai un elenco di numeri, ordina in base a una dichiarazione del caso con una conversione di elenco:

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

... o il più compatto, ma non così intuitivo:

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

order by case