私はソート
select ename, to_char(hiredate,'fmDay') as "Day" order by "Day";
を記述する場合、それはのような日に基づいて結果を並べ替えます。金曜日、月曜日、そして先週の水曜日、 からの並べ替えが好きです。
ただし、曜日別に並べ替えると便利です。月曜日から日曜日まで。
私はソート
select ename, to_char(hiredate,'fmDay') as "Day" order by "Day";
を記述する場合、それはのような日に基づいて結果を並べ替えます。金曜日、月曜日、そして先週の水曜日、 からの並べ替えが好きです。
ただし、曜日別に並べ替えると便利です。月曜日から日曜日まで。
TO_CHAR
の他の形式をご覧ください。 'fmDay'の代わりに 'D'を使用すると、1から7までの曜日が表示されます。その後、簡単に並べ替えることができます。
ここでの日付形式のリストです:http://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements004.htm
あなたは文字列で注文しているので、あなたがあるためにそれを取得している(あなたは何から選択していないので、これは動作しないでしょう) 。
D
の曜日を作成するために使用されたformat modelで注文できましたが、日曜日は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 Fiddleです。あなたの場合、あなたのクエリはなるで
:
select ename, to_char(hiredate,'fmDay') as "Day"
from my_table
order by mod(to_char(hiredate, 'D') + 5, 7)
なぜあなたはこの列でソートその後、日に対応する番号1-7で別の列を追加することができたときに複雑にする...
私は同じ要件が発生しました。曜日別にクエリ結果を並べ替えることはできますが、日曜日からは開始しません。私は月曜日に開始するためにOracleで次のクエリを使用しました。 (週の任意の曜日で注文を開始するように変更します(たとえば、「月曜日」から「火曜日」に変更します)。)
SELECT ename, to_char(hiredate, 'fmDAY') AS "Day"
FROM emp
ORDER BY (next_day(hiredate, 'MONDAY') - hiredate) DESC
または:
SELECT ename, to_char(hiredate, 'fmDAY') AS "Day"
FROM emp
ORDER BY (hiredate - next_day(hiredate, 'MONDAY'))
CASE デイ= '日曜日BY * からクラス ORDERを選択し、1 日='月曜日THEN 2 WHEN日= '火曜日' THEN 3 いつ曜日= '水曜日' THEN 4 いつ曜日= '木曜日' THEN 5 いつ昼= '金曜日' THEN 6 01 = '土曜日の日はTHEN 7 ENDのASCそのユーザーを想定し
SELECT
*
FROM
classes
ORDER BY
CASE
WHEN Day = 'Sunday' THEN 1
WHEN Day = 'Monday' THEN 2
WHEN Day = 'Tuesday' THEN 3
WHEN Day = 'Wednesday' THEN 4
WHEN Day = 'Thursday' THEN 5
WHEN Day = 'Friday' THEN 6
WHEN Day = 'Saturday' THEN 7
END ASC
は、そのテーブルのユーザーのクラスと呼ばれるテーブルが(主キー)、クラス名、デイ
をCLASS_IDていてい
これは日曜日の開始日です。 –