土日祝日の翌日を取り出すSQLの例文を見ていたのですが意味が分かりませんでした。
dualが日付を格納しているという設定を作るための仮のテーブルであることは理解できました。
以下ソースです。
(タイプミスあるかもなので実際の画像上げておきます。訳があって例文をコピペできませんでした。)
select holi2.* , to_char(sysdate + holi2.renban, 'yyyy/MM/dd') newDate ,case when to_char(sysdate + holi2.renban, 'yyyy/MM/dd') = holi2.ddate then 0 else 1 end chk from ( select holiday.ddate ,ROW_NUMBER() OVER (ORDER BY NULL) renban from ( select aaa.* from( select '2022/01/22' ddate from dual union all select '2022/01/23' ddate from dual union all select '2022/01/29' ddate from dual union all select '2022/01/30' ddate from dual union all select '2022/02/05' ddate from dual union all select '2022/02/06' ddate from dual union all select '2022/01/15' ddate from dual union all select '2022/01/16' ddate from dual ) aaa order by aaa.ddate )holiday where to_char(sysdate + 1, 'yyyy/MM/dd') <= holiday.ddate )holi2 )holi3 where holi3.chk = 1
疑問点を以下にあげます。
1.「2022/01/23」と「from」の間の「ddate」は何者か?
カンマで区切られていないなら列ではない。しかし列名とfromの間にddateなんて文字を入れることなんてできただろうか?
2.select区の「holiday.ddate」「aaa.*」、order by区の 「aaa.ddate」
いずれの区も「.」なんて入れることができただろうかという疑問です。
また、その意味を調べましたが分かりませんでした。
教えて欲しいです。
SQLで営業日などを取り出すために是非覚えたいです。
よろしくお願いします。
どなたかよろしくお願いします。