- ベストアンサー
SQL文の書き方について
- SQL文の書き方についてお悩みですね。テーブルから最小値を取得するSQL文を作成したい場合、どのようにすれば良いでしょうか?現在考えているSQL文では期待する結果が得られないようです。
- 例えば、テーブルAには基本コード、大分類、中分類の列があります。基本コードごとに大分類と中分類の最小値を取得したい場合、どのような方法がありますか?
- 現在のSQL文では中分類を求める際に大分類の指定が誤っているため、想定している結果が得られないようです。どのように修正すると良いでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
SQL Server 2005の環境しかないのですが、「SQL Server 2000でも動くと思われるSQL」、「SQL Server 2005の機能を使ったSQL」の例を提示しておきます。 1.~SQL Server 2000 (1)概要 SQL Server 2000までは、インラインビューの利用範囲に制限がある(Oracle並には実装していない)と、マイクロソフトの機能比較で記載されています。実際にどの部分まで実装され、どの部分が未実装なのか不詳ですが、以下のSQLを試してみてください。 (2)SQL例 select x.基本コード,x.大分類,中分類 from (select 基本コード,min(大分類) as 大分類 from tableA group by 基本コード) as x, (select 基本コード,大分類,min(中分類) as 中分類 from tableA group by 基本コード,大分類) as y where x.基本コード=y.基本コード and x.大分類=y.大分類 2.SQL Server 2005~ (1)概要 SQL Server 2005で分析関数が実装されました。今回のようなケースに適用すると便利です。 (2)SQL例 select 基本コード,大分類,中分類 from (select 基本コード,大分類,中分類, rank() over(partition by 基本コード order by 大分類,中分類) as rank from tableA) as x where rank=1
お礼
1.で教えて下さった方で、完璧に出来ました。 派生テーブルと言うものをこれまで1回しか使ったことがなかったのですが、これを機会にきちんと自分のものに出来るよう、理解しておきたいと思います。 2.で教えてくださった方も、今後2005を使うことになると思いますので、忘れないようにしておきたいと思います。 迅速でかつ正確に回答してくださり、本当に本当にありがとうございました。