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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
つい集めてしまうものはなんですか?
人間誰もは1つ「やたらこればかり集めてしまう」というものがあるもの。 あなたにとって、つい集めてしまうものはなんですか?
-
一回も披露したことのない豆知識
あなたの「一回も披露したことのない豆知識」を教えてください。 「そうなんだね」と「確かに披露する場所ないね」で評価します。
-
CDの保有枚数を教えてください
ひとむかし前はCDを買ったり借りたりが主流でしたが、サブスクで簡単に音楽が聴ける今、CDを手に取ることも減ってきたかと思います。皆さんは2024年現在、何枚くらいCDをお持ちですか?
-
牛、豚、鶏、どれか一つ食べられなくなるとしたら?
牛肉、豚肉、鶏肉のうち、どれか一種類をこの先一生食べられなくなるとしたらどれを我慢しますか?
-
ハマっている「お菓子」を教えて!
この世には、おいしいお菓子がありすぎて……。 次何を食べたらいいか迷っています。 みなさんが今、ハマっている「お菓子」を教えてください!
-
SQLについて教えて下さい with(nolock)の意味は何でしょうか?
SQL Server
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Oracleのビュー作成時に「指定...
-
Oracle SQLにて固定長でデータ...
-
DB2でREPLACEによる文字列の置換
-
抽出結果を1件ずつ次の抽出条件...
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
「直需」の意味を教えてください
-
INSERT INTO ステートメントに...
-
Accessでテーブルの値をテキス...
-
Oracle 2つのDate型の値の差を...
-
Accessのフィールド数が255しか...
-
Accessでテーブル名やクエリ名...
-
Accessで、固定アルファベット+...
-
作番ってどういう意味でしょうか?
-
Accessのクエリでデータの入力...
-
ACCESSのクエリで集計で、先頭...
-
テーブルの存在チェックについて
-
3つの表を1つに縦に連結する
-
Accessクエリーで両方のテーブ...
-
Access テキスト型に対する指定...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Oracleのビュー作成時に「指定...
-
Oracle SQLにて固定長でデータ...
-
DB2でREPLACEによる文字列の置換
-
ROWNUMについて
-
ORACLEで一番最初の結果だけを...
-
WITH句で複数テーブルを定義す...
-
抽出結果を1件ずつ次の抽出条件...
-
ある値以上の空き番の最小値を...
-
sqlplusで日本語入力
-
PL/SQL 複数件同じ値で更新す...
-
ある単位で集計した最小値を項...
-
最終行までの書式を揃えたい
-
効率のいい集計SQL文
-
P/L SQLで値が更新されない。
-
SQL 計算
-
VBAのRows.Selectについて
-
distinct で抽出したレコード件数
-
動的SQLでのDECODE
-
UPDATE文でこのような更...
-
時間の重複を加味した連続時間S...
おすすめ情報