- ベストアンサー
サブクエリーについて教えてください。
こんにちは!以下のようなことがサブクエリーを使用してできるか?他にどんな方法があるか、アドバイスをお願いします。 あるテーブル(TABLE)から2段階でデータをselectし、計算させたいのですが分かりません。 一段階目 select a,b,c,d,e,f from TABLE where a='A' and b='B' 二段階目(上記の結果を使って、ここからが分かりません) select c,d,e,sum(f) as 結果 from TABLE(?) group by c,d,e having e='E' やりたいことの概要: 1. a='A' and b='B'でデータを抽出 2. 1.で抽出したデータに対してグループ化して集計する これを一回で実行するにはどのようにしたら良いでしょうか?サブクエリーでできそうだと思い、いろいろ調べましたが、よく分かりませんでした。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
from 句にサブクエリーを書くのを インラインビューって言うんですが、 参考URLを見ると、SQL Server 2000 では 未対応となっていますね。 勿論、下記「1段階目」の SQL を view にしてやれば、同様のことはできます。 -------------- select a,b,c,d,e,f from TABLE where a='A' and b='B' -------------- 上記を view にして、「二段階目」の テーブル名のところにこの view を指定するわけです。
その他の回答 (3)
- rotesKomet
- ベストアンサー率31% (83/265)
細かい箇所が良くわからなかったのですが、 次のSQL文で取得できませんでしょうか? select c,d,e,sum(f) as 結果 from TABLE where a='A' and b='B' and e='E' group by c,d,e
お礼
ご回答ありがとうございます。 サブクエリーにこだわり過ぎていました。
- taka_tetsu
- ベストアンサー率65% (1020/1553)
そのまま埋め込むだけ。 select c,d,e,sum(f) as 結果 from (select a,b,c,d,e,f from TABLE where a='A' and b='B') group by c,d,e having e='E' #ただし、SQL Serverのバージョンによっては出来なかったはず。
補足
ご回答ありがとうございます。 kameidさんからも同様に指摘されていますが、 SQL SERVER 2000ではご回答のようなサブクエリーは使用できないのでしょうか? クエリアナライザで実行すると、キーワード'GROUP'付近に正しくない構文があります。というエラーが出ます。 よろしくお願いします。
- kameid
- ベストアンサー率44% (8/18)
これ、 select c,d,e,sum(f) as 結果 from TABLE where a='A' and b='B' group by c,d,e having e='E'; でだめですか? サブクエリー使うなら、単純に select c,d,e,sum(f) as 結果 from (select a,b,c,d,e,f from TABLE where a='A' and b='B') group by c,d,e having e='E'; とかですかね。ただし、DBMS依存です。
お礼
ありがとうございました。 サブクエリーを意識していたので、単純なところに目が行きませんでした。 サブクエリーを使わなくて良かったんですね^^;
お礼
ありがとうございます。 いろいろ調べたのですが調べ方が悪いのかなかなか分かりませんでした。 勉強していきますので、これかもよろしくお願いします。