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

Sortieren nach Wochentag von Montag bis Sonntag

Sie erhalten es in der Reihenfolge, in der Sie sind, weil Sie nach einer Zeichenfolge ordnen (und das würde nicht funktionieren, weil Sie nichts auswählen).

Sie können nach dem Formatmodell ordnen, das verwendet wird, um den Wochentag in numerischer Form zu erstellen, D , aber da Sonntag hier 1 ist, würde ich die Verwendung von mod() empfehlen damit das funktioniert.

d.h. unter der Annahme der Tabelle

create table a ( b date );

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

Das würde funktionieren:

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)

Hier ist eine SQL Fiddle zur Demonstration.

In Ihrem Fall würde Ihre Abfrage folgendermaßen aussehen:

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