トップページに戻る
次のSQLパズルへ
前のSQLパズルへ
3-24 月曜日から出力
SQLパズル
祝日テーブル
日
---------
2006/1/1
2006/2/11
2006/3/21
2006/4/29
2006/5/3
2006/5/4
2006/5/5
2006/9/23
2006/11/23
2006/12/23
祝日の曜日を重複を排除して、
月曜日から順に出力する
出力結果
祝日の曜日
----------
火曜日
水曜日
木曜日
金曜日
土曜日
日曜日
データ作成スクリプト
create table 祝日(日 date);
insert into 祝日 values(to_date('2006/1/1' ,'fmyyyy/mm/dd'));
insert into 祝日 values(to_date('2006/2/11' ,'fmyyyy/mm/dd'));
insert into 祝日 values(to_date('2006/3/21' ,'fmyyyy/mm/dd'));
insert into 祝日 values(to_date('2006/4/29' ,'fmyyyy/mm/dd'));
insert into 祝日 values(to_date('2006/5/3' ,'fmyyyy/mm/dd'));
insert into 祝日 values(to_date('2006/5/4' ,'fmyyyy/mm/dd'));
insert into 祝日 values(to_date('2006/5/5' ,'fmyyyy/mm/dd'));
insert into 祝日 values(to_date('2006/9/23' ,'fmyyyy/mm/dd'));
insert into 祝日 values(to_date('2006/11/23','fmyyyy/mm/dd'));
insert into 祝日 values(to_date('2006/12/23','fmyyyy/mm/dd'));
commit;
SQL
select 曜日1 as 祝日の曜日
from (select distinct to_char(日,'day') as 曜日1,
nullif(to_char(日,'d'),'1') as 曜日2
from 祝日)
order by 曜日2;
解説
to_char(日,'day')の結果と、
nullif(to_char(日,'d'),'1')の結果が、
1対1であることを使ってます