
WITH句で複数テーブルを定義する方法を知りたいです。
どこかのサイトで、複数テーブルを定義するには、以下のような
方法にて実現できる旨の記事を目にしました。(withでの宣言テーブル間を「,」で区切る)ですが、「'.' 付近に不適切な構文があります。
」のようにエラーがメッセージ欄に表示されます。
------------------------------------------------------------
WITH a (code, cnt) as (
select code, count(*) from abc
where a is null
group by documentcode),
b (ttr.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 )
select * from a cross join b;
------------------------------------------------------------
ご存知の方でコメント頂ける方、お手数お掛けしますが、
宜しければ教えて下さい。
No.3ベストアンサー
- 回答日時:
>#1さんの指摘では、ttrがスコープ外?だったから
>いけなかったのでしょうか。
迷走してませんかね?
>b (ttr.documentcode, cnt) as (
CTEで「表名を b 、列名を ttr.documentcode と定義する」という指定になっていますよ?
もし、仮にそういった列名を使いたいなら、標準SQLでは " (二重引用符)、SQL Serverなどは [ ] で囲みますよね?
回答ありがとうございます。
ごちゃごちゃしていましたが、今、整理できました。
表b (表bの列定義) as (
表bとなるクエリ
)
なので、bの列定義となる列名はなんでもよく、
ただ、私の場合、ttr.documentcodeとなっていたので
その定義の仕方は、よくないでしょ、ってことで
エラーとなっていたんですね。
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
と指定することになりますよね?
おおお、、、、そうですね。。。
今回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.をつけてませんでした。
指摘頂いた通り修正後、実行される事が確認できました。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- PostgreSQL SQLで検索結果の記事を表示したい 1 2022/04/28 21:03
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
- MySQL SQLです。下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「昨年の各月の総降 1 2023/07/01 00:32
- Oracle SQL update方法 2 2022/06/22 14:07
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ORACLEで一番最初の結果だけを...
-
ワードで4段組みで文章を書い...
-
Excel 2019 のピボットテーブル...
-
【マクロ】列を折りたたみ非表...
-
「直需」の意味を教えてください
-
エクセルVBAで5行目からオート...
-
Accessレコードの追加や変更が...
-
条件を満たした次のレコードから
-
Excel側からAccessへデータをエ...
-
アリエクで買った商品が破損し...
-
PC-98でHDDに複数OSを入れる...
-
ACCESSのクエリで集計で、先頭...
-
Accessでテーブルからテーブル...
-
Accessで同一作業の繰り返し
-
Access フォームのデータがテー...
-
Accessのクエリについて
-
accessのレポートで元になるテ...
-
access フォーム 大分類、小分類
-
Access VBAでクエリーのレコー...
-
通貨型で\\0の時、何も表示しな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Oracleのビュー作成時に「指定...
-
DB2でREPLACEによる文字列の置換
-
Oracle SQLにて固定長でデータ...
-
抽出結果を1件ずつ次の抽出条件...
-
ROWNUMについて
-
ある値以上の空き番の最小値を...
-
sqlplusで日本語入力
-
WITH句で複数テーブルを定義す...
-
ORACLEで一番最初の結果だけを...
-
ACCESS クエリーから件数取得
-
結合について
-
時間の重複を加味した連続時間S...
-
重複
-
P/L SQLで値が更新されない。
-
ORACLEでの件数カウント方法
-
効率のいい集計SQL文
-
sqlの条件文に関して
-
SQL 計算
-
distinct で抽出したレコード件数
-
SQL2005 で 複数列でのユニー...
おすすめ情報