• ベストアンサー

サブクエリーについて教えてください。

こんにちは!以下のようなことがサブクエリーを使用してできるか?他にどんな方法があるか、アドバイスをお願いします。 あるテーブル(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.で抽出したデータに対してグループ化して集計する これを一回で実行するにはどのようにしたら良いでしょうか?サブクエリーでできそうだと思い、いろいろ調べましたが、よく分かりませんでした。 よろしくお願いします。

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

  • ベストアンサー
  • kameid
  • ベストアンサー率44% (8/18)
回答No.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 を指定するわけです。

参考URL:
http://www.microsoft.com/japan/SQL/evaluation/compare/prk/vsOracle4_7.asp
noname#10916
質問者

お礼

ありがとうございます。 いろいろ調べたのですが調べ方が悪いのかなかなか分かりませんでした。 勉強していきますので、これかもよろしくお願いします。

その他の回答 (3)

回答No.3

細かい箇所が良くわからなかったのですが、 次のSQL文で取得できませんでしょうか? select c,d,e,sum(f) as 結果 from TABLE where a='A' and b='B' and e='E' group by c,d,e

noname#10916
質問者

お礼

ご回答ありがとうございます。 サブクエリーにこだわり過ぎていました。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

そのまま埋め込むだけ。 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のバージョンによっては出来なかったはず。

noname#10916
質問者

補足

ご回答ありがとうございます。 kameidさんからも同様に指摘されていますが、 SQL SERVER 2000ではご回答のようなサブクエリーは使用できないのでしょうか? クエリアナライザで実行すると、キーワード'GROUP'付近に正しくない構文があります。というエラーが出ます。 よろしくお願いします。

  • kameid
  • ベストアンサー率44% (8/18)
回答No.1

これ、 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依存です。

noname#10916
質問者

お礼

ありがとうございました。 サブクエリーを意識していたので、単純なところに目が行きませんでした。 サブクエリーを使わなくて良かったんですね^^;

関連するQ&A