Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle sql сортира дните от седмицата по текущия ден

Ако се опитвате да сортирате набор от дати по ден от седмицата, като събота е първата, помислете за подреждане по модифицирана дата:

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

Недостатъкът е, че не е много интуитивен, така че добавете коментар към кода, ако използвате този метод.

Редактиране:Когато имате списък с числа, подредете по регистър на буквите с преобразуване на списък:

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

... или по-компактното, но не толкова интуитивно:

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. Oracle криптира/декриптира буца

  2. Как да разрешите ORA-29283:невалидна файлова операция

  3. Списък за връщане<String> с помощта на Spring jdbc от съхранена процедура на Oracle с персонализиран обект

  4. Oracle:копиране на ред при актуализиране на едно поле

  5. COUNT(rowid) по-бърз ли е от COUNT(*)?