Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle sql sortuj dni tygodnia według bieżącego dnia

Jeśli próbujesz posortować zestaw dat według dnia tygodnia, gdzie sobota jest pierwszą, rozważ zamówienie według zmodyfikowanej daty:

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

Minusem jest to, że nie jest to zbyt intuicyjne, więc dodaj komentarz do kodu, jeśli używasz tej metody.

Edycja:tam, gdzie masz listę numerów, uporządkuj według instrukcji przypadku z konwersją listy:

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

... lub bardziej kompaktowy, ale nie tak intuicyjny:

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

order by case 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wycofać, gdy wystąpi błąd podczas wykonywania polecenia programu ładującego sql?

  2. Wartość logiczna w OracleDbType

  3. Zmień datę wygaśnięcia hasła użytkownika Oracle

  4. ORA-01002:pobierz poza sekwencją C++

  5. OC4J 10.1.3.3 nie można znaleźć pliku ojms.rar podczas konfigurowania trwałości bazy danych