実現したいこと
複数のパラメータを持つデータを各カラムに格納したい
前提
1つのカラムに
12日/18日/1月12日/3月20日/水曜日/金曜日/第一水曜日/第三日曜日のようなデータが入っており、
似たようなカラムが多数あります。
このデータを、n日系/n月n日系/曜日系/第n〇曜日系 のように分けて、横持ちで格納したいです。
[元データ]
event_date
9日/12月10日
9日/水曜日
9日/10月10日/10月11日
第2土曜日/第4土曜日/9日/19日
9日
8日/第4土曜日
8日
8日/12日
8日/12日
8日/12日
8日/12日
8日
8日/16日
8日
8日
8日/土曜日/日曜日
7日/11日/15日/22日/金曜日
7日/11日/22日
7日/第2水曜日
7日
7日/第3日曜日
7日
7日/22日/24日
7日/15日/金曜日
7日/16日/27日
[イメージ]
カラム①(1つ目のn日):12日 カラム②(2つ目のn日):18日 カラム③(1つ目の〇曜日):水曜日 カラム④(2つ目の〇曜日):金曜日 カラム⑤(1つの第n〇曜日):第一水曜日 カラム⑥(2つ目の第n〇曜日):第三日曜日
該当のソースコード
MySQL
1### 試したこと 2SELECT 3 -- 毎日~日をday_に格納 4 CASE 5 WHEN event_date NOT LIKE '%[0-9]月%' AND event_date NOT LIKE '%[0-9]月[0-9]+日%' THEN REGEXP_SUBSTR(event_date, '([0-9]+日)') 6 ELSE NULL 7 END AS day_1, 8 CASE 9 WHEN event_date NOT LIKE '%[0-9]月%' AND event_date NOT LIKE '%[0-9]月[0-9]+日%' THEN REGEXP_SUBSTR(event_date, '([0-9]+日)', 1, 2) 10 ELSE NULL 11 END AS day_2, 12 -- 特定の日付(1月23日等)をmonth_day_に格納 13 REGEXP_SUBSTR(event_date, '[0-9]+月[0-9]+日') AS month_day, 14 REGEXP_SUBSTR(event_date, '[0-9]+月[0-9]+日',1 ,2) AS month_day_2, 15 -- 曜日をday_week_に格納 16 CASE 17 WHEN event_date NOT LIKE '%第%' THEN REGEXP_SUBSTR(event_date, '([月火水木金土日]曜日)') 18 ELSE NULL 19 END AS day_week_1, 20 CASE 21 WHEN event_date NOT LIKE '%第%' THEN REGEXP_SUBSTR(event_date, '([月火水木金土日]曜日)',1 ,2) 22 ELSE NULL 23 END AS day_week_2, 24 -- 特定の曜日(第n〇曜日/を最終〇曜日)をsp_day_week_に格納 25 REGEXP_SUBSTR(event_date, '([第]+[12345一二三四五]+[月火水木金土日]+曜日)') AS sp_day_week_1, 26 REGEXP_SUBSTR(event_date, '([第]+[12345一二三四五]+[月火水木金土日]+曜日)',1 ,2) AS sp_day_week_2 27FROM A1
わからないこと
上記クエリではx月y日のデータについて、y日の部分がday_にも格納されてしまいます。
day_にはx月y日のような月日のデータは格納せずに、z日のような日付のみのデータが格納されるようにしたいです。また、x月y日のような月日のデータはmonth_dayに格納したいです。。
初級者のため、前提が間違っているかもしれないので、その際にはコメントをお願い致します。
回答2件
あなたの回答
tips
プレビュー