質問するログイン新規登録
PostgreSQL

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

186閲覧

【PostgreSQL 17】With句でSQLエラー [42601]

tentative_user

総合スコア2

PostgreSQL

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2025/07/25 14:14

編集2025/07/25 14:18

0

0

実現したいこと

with句で一時テーブルを定義したいです

発生している問題・分からないこと

一時テーブルをwith文で作成したいのですが、下記エラーが出力されます

エラーメッセージ

error

1Error occurred during SQL query execution 2 3理由: 4 SQLエラー [42601]: ERROR: 入力の最後で 構文エラー 5 位置: 61

該当のソースコード

sql

1drop table if exists 社員, 部門; 2 3create table 社員(社員コード int, 社員名 varchar(25), 部門コード varchar(3)); 4create table 部門(部門コード varchar(3), 部門名 varchar(25)); 5 6insert into 社員 values (11001, '遠藤美弥子' , 'E01'), (12001, '江川豊', 'E02'), (22001, '一条光', 'J01'); 7insert into 部門 values ('E01','営業1課'), ('E02','営業2課'), ('E03','営業3課'); 8 9with 営業部門コード as (select 部門コード from 部門 where 部門名 like '営業_課');

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

最後の行の

SQL

1 where 部門名 like '営業_課'

を消してシンプルにしても同じエラーが表示されます

補足

特になし

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jimbe

2025/07/25 16:16 編集

> 位置: 61 というのは >with 営業部門コード … の行のことですか?
tentative_user

2025/07/25 15:20

はい、まさしくその部分です
guest

回答1

0

ベストアンサー

WITH 句は「句」というぐらいですから、単独で存在できるものではありません。
SELECT や INSERT / CREATE 等の一部として使うものではないでしょうか。
(つまり一時テーブルを定義するのでは無く、サブクエリのようなもの。)

投稿2025/07/25 15:12

編集2025/07/25 15:15
jimbe

総合スコア13394

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tentative_user

2025/07/25 15:28 編集

ありがとうございます。確かにご指摘の通り、With句の下にselect文を入れたらできましたね。。。 with 営業部門コード as (select 部門コード from 部門 where 部門名 like '営業_課') select * from 営業部門コード; with句を一時テーブルを定義する文と勘違いしていましたね。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問