[解決済み] 1つのSELECT文に複数の共通テーブル式を入れるには?
2023-01-12 17:44:44
質問
複雑なselect文を簡略化している最中なので、一般的なテーブル式を使おうと思っています。
単一のcteを宣言しても問題なく動作します。
WITH cte1 AS (
SELECT * from cdr.Location
)
select * from cte1
同じSELECTで複数のcteを宣言して使用することは可能でしょうか?
このSQLではエラーが発生します。
WITH cte1 as (
SELECT * from cdr.Location
)
WITH cte2 as (
SELECT * from cdr.Location
)
select * from cte1
union
select * from cte2
はエラーです。
Msg 156, Level 15, State 1, Line 7
Incorrect syntax near the keyword 'WITH'.
Msg 319, Level 15, State 1, Line 7
Incorrect syntax near the keyword 'with'. If this statement is a common table expression, an xmlnamespaces clause or a change tracking context clause, the previous statement must be terminated with a semicolon.
NBです。セミコロンを入れてみましたが、このようなエラーになります。
Msg 102, Level 15, State 1, Line 5
Incorrect syntax near ';'.
Msg 102, Level 15, State 1, Line 9
Incorrect syntax near ';'.
おそらく関係ないと思いますが、これはSQL2008での話です。
どのように解決するのですか?
のような感じでいいんじゃないでしょうか。
WITH
cte1 as (SELECT * from cdr.Location),
cte2 as (SELECT * from cdr.Location)
select * from cte1 union select * from cte2
基本的には
WITH
はここでは単なる節であり、リストを取る他の節と同様に "," が適切なデリミタとなります。
関連
-
[解決済み] SQL Server 2008でテーブルのエイリアスを使用してUPDATE SQLを記述する方法は?
-
executeQuery()ソリューションでデータ操作文を発行できない。
-
[解決済み] SQL Server : 列を行に変換する
-
[解決済み] SQL Server で複数行のテキストを 1 つのテキスト文字列に連結する方法
-
[解決済み] SQL ServerでJOINを使用してUPDATE文を実行するにはどうすればよいですか?
-
[解決済み] SQL ServerでJOINを使用してテーブルを更新しますか?
-
[解決済み] SQL ServerにおけるINSERT OR UPDATEに関する解決策
-
[解決済み] SQL Serverでテーブルの名前を変更する方法は?
-
[解決済み] SQL ServerでINNER JOINを使用して削除するにはどうすればよいですか?
-
[解決済み】SQL Server 存在しない場合に挿入する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MHAの高可用性構成とフェイルオーバー
-
[解決済み] PostgreSQLのCREATE DATABASE IF NOT EXISTSをシミュレートしてみませんか?
-
[解決済み] SQLの結合形式 - 入れ子になった内側join
-
[解決済み] SQL Serverでレコードを削除した後、IDシードをリセットする。
-
[解決済み] SQL JOIN - WHERE句とON句の比較
-
[解決済み] MySQLでFULL OUTER JOINを行うにはどうすればよいですか?
-
[解決済み] mysqldumpで特定のテーブルをスキップする
-
[解決済み] SQLでランダムな行を要求する方法は?
-
[解決済み] 複数の列に対してSELECT DISTINCTする方法(またはできる方法)は?
-
[解決済み] T-SQL文の接頭辞Nの意味と使うべきタイミングは?