sql >> Databáze >  >> RDS >> Oracle

Oracle sql třídí dny v týdnu podle aktuálního dne

Pokud se snažíte seřadit sadu dat podle dne v týdnu, přičemž sobota je první, zvažte objednání podle upraveného data:

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

Nevýhodou je, že to není příliš intuitivní, takže pokud používáte tuto metodu, přidejte komentář ke kódu.

Upravit:Pokud máte seznam čísel, seřaďte je podle případu s buď převodem seznamu:

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

... nebo kompaktnější, ale ne tak intuitivní:

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

order by case 


  1. Získáváte počet řádků pro tabulku v MySQL?

  2. Jak rychle přetřídit tabulku MySQL podle jednoho ze sloupců?

  3. UPOZORNĚNÍ:místo parametrů CREATE LANGUAGE použijte informace pg_pltemplate

  4. sekvenční sumace dotazů Oracle na řádky