質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

受付中

土日祝日の翌日を取り出すSQLを理解したいです。

dododo_pg
dododo_pg

総合スコア21

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

1回答

0評価

0クリップ

269閲覧

投稿2022/01/23 14:40

土日祝日の翌日を取り出す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

SQLで営業日などを取り出すために是非覚えたいです。
よろしくお願いします。
どなたかよろしくお願いします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

退会済みユーザー

退会済みユーザー

2022/01/24 02:08

FROM DUALって、Oracle Databaseの方言だった気がします。なにか、OracleのSQLの課題を、手元のPostgreSQL上で解決させようとしていたりしますか?

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。