• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:WITH句で複数テーブルを定義する方法)

WITH句を使用して複数のテーブルを定義する方法

このQ&Aのポイント
  • WITH句を使用して複数のテーブルを定義する方法を知りたいです。エラーメッセージが表示される問題についても解決策を教えてください。
  • この記事では、WITH句を使用して複数のテーブルを定義する方法について詳しく説明します。また、エラーメッセージの表示に関する問題についても解決策をご紹介します。
  • 複数のテーブルを定義するためには、WITH句を使用する方法があります。ただし、エラーメッセージが表示される場合もありますので、その解決策についてもご紹介します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

>#1さんの指摘では、ttrがスコープ外?だったから >いけなかったのでしょうか。 迷走してませんかね? >b (ttr.documentcode, cnt) as ( CTEで「表名を b 、列名を ttr.documentcode と定義する」という指定になっていますよ? もし、仮にそういった列名を使いたいなら、標準SQLでは " (二重引用符)、SQL Serverなどは [ ] で囲みますよね?

yamachan_tomo
質問者

お礼

回答ありがとうございます。 ごちゃごちゃしていましたが、今、整理できました。 表b (表bの列定義) as ( 表bとなるクエリ ) なので、bの列定義となる列名はなんでもよく、 ただ、私の場合、ttr.documentcodeとなっていたので その定義の仕方は、よくないでしょ、ってことで エラーとなっていたんですね。

その他の回答 (2)

回答No.2

#1さんの指摘部分”だけ”、修正したのですか? >WITH a (code, cnt) as ( > select code, count(*) from abc > where a is null > group by documentcode), abc表に、code列はあるのですか? 仮にあっても、documentcodeでグループ化しているのだから、おかしいですよね? >b (ttr.documentcode, cnt) as ( ↓ b (documentcode, cnt) as ( としたのでしょうかね? >select ttr.documentcode, count(*) from abc tr inner join def ttr >with(nolock) >on tr.seqno = ttr.seqno >where SendTime is null >group by documentcode ) グループ化するdocumentcode列は、trとttrのどちらのを使えばいいか曖昧ですよね? select句でttr.documentcodeを指定するなら、 group by ttr.documentcode と指定することになりますよね?

yamachan_tomo
質問者

お礼

おおお、、、、そうですね。。。 今回WITH句をはじめてつかったので、 そのせいだとばかり思っていました。 >>WITH a (code, cnt) as ( >> select code, count(*) from abc >> where a is null >> group by documentcode), >abc表に、code列はあるのですか? >仮にあっても、documentcodeでグループ化しているのだから、おかし >いですよね? 上記については、 select documentcode, count(*) from abc where a is null group by documentcode の間違いでした。すみません。 そのままコピペする訳にはいかず、多少クエリを 編集したのですが、その際にミスしました。 #1さんの指摘では、ttrがスコープ外?だったから いけなかったのでしょうか。 また、、、そうですね。group by後のdocumentcodeに ttr.をつけてませんでした。 指摘頂いた通り修正後、実行される事が確認できました。 ありがとうございます。

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

> b (ttr.documentcode, cnt) おかしいのはここです。 => b (documentcode, cnt)

yamachan_tomo
質問者

補足

教えて頂いた通りにSQLを再発行しました。 その際、以下のエラーメッセージが発生しました。 列名'code'が無効です。 列名'documentcode'があいまいです。

関連するQ&A