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

Oracle sql sorterer ugedage efter nuværende dag

Hvis du prøver at sortere et sæt datoer efter ugedag, hvor lørdag er den første, så overvej at bestille efter en ændret dato:

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

Ulempen er, at den ikke er særlig intuitiv, så tilføj en kodekommentar, hvis du bruger denne metode.

Rediger:Hvor du har en liste over numre, skal du sortere efter en sagsudsagn med enten en listekonvertering:

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

... eller det mere kompakte, men ikke så intuitivt:

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

order by case 


  1. PHP MySql - Tjek om værdien findes

  2. MySQL vælg rækker, hvor venstre join er nul

  3. er der en mysql-funktion til at afkode html-enheder?

  4. Oracle SQL Developer - Vinduet forespørgselsresultater med gitter mangler