sql >> データベース >  >> RDS >> Oracle

月曜日から日曜日までの曜日で並べ替える

    文字列で並べ替えているため、現在の順序で取得できます(何も選択していないため、これは機能しません)。

    曜日を数値形式で作成するために使用されるフォーマットモデルDで並べ替えることができます。 、ただし、これでは日曜日が1なので、mod()を使用することをお勧めします これを機能させるために。

    つまり、テーブルを想定します

    create table a ( b date );
    
    insert into a
     select sysdate - level
      from dual
    connect by level <= 7;
    

    これはうまくいくでしょう:

    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)
    

    これがデモンストレーションするSQLフィドルです。

    あなたの場合、クエリは次のようになります:

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


    1. SQLで文字列を連結する方法

    2. MySQLのIFEXISTSの使用

    3. SQLServerカーソルで複数の値を取得する

    4. Oracle(+)演算子