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

Sortuj według dnia tygodnia od poniedziałku do niedzieli

Otrzymujesz to w takiej kolejności, w jakiej jesteś, ponieważ porządkujesz według ciągu (a to nie zadziała, ponieważ nie wybierasz z niczego).

Możesz uporządkować według modelu formatu użytego do utworzenia dnia tygodnia w formie numerycznej, D , ale ponieważ niedziela jest 1 w tym miejscu, polecam użycie mod() aby to zadziałało.

czyli zakładając tabelę

create table a ( b date );

insert into a
 select sysdate - level
  from dual
connect by level <= 7;

To zadziała:

select mod(to_char(b, 'D') + 5, 7) as dd, to_char(b, 'DAY')
  from a
 order by mod(to_char(b, 'D') + 5, 7)

Oto program SQL Fiddle do zademonstrowania.

W Twoim przypadku Twoje zapytanie wyglądałoby następująco:

select ename, to_char(hiredate,'fmDay') as "Day" 
  from my_table
 order by mod(to_char(hiredate, 'D') + 5, 7)


  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 przekonwertować wartości oddzielone przecinkami na wiersze w Oracle?

  2. skuteczny sposób na sprawdzenie, czy istnieje wiersz tabeli

  3. FROM_TZ() Funkcja w Oracle

  4. Konwertuj ciąg znaków oddzielonych przecinkami na tablicę w PL/SQL

  5. Błąd Oracle .Net ManagedDataAccess:nie można załadować typu „OracleInternal.Common.ConfigBaseClass” z zestawu