お世話になっております。
現在、SQLServer2000(SP4)を使用しています。
次の結果を求めるSQL文を作りたいのですが、中々上手く行きません。
良い方法を教えて下さい。
あるテーブル(tableA)にレコードが以下のようにあるとします。
【基本コード】【大分類】【中分類】
1 1 3
1 1 4
1 2 1
2 1 99
2 18 1
3 3 2
やりたい事は、【基本コード】毎に、【大分類】【中分類】の最小値を取得したいので、下記の結果を得たいのですが、
期待する結果↓
【基本コード】【大分類】【中分類】
1 1 3
2 1 99
3 3 2
現在考えているSQL文では、下記のようになってしまいます。
実際の結果↓
【基本コード】【大分類】【中分類】
1 1 3
2 1 3
3 3 3
現在考えているSQL文↓
SELECT
基本コード,
MIN(大分類) AS 大分類,
(SELECT MIN(中分類) FROM tableA WHERE 大分類 = (SELECT MIN(大分類) FROM tableA) GROUP BY 大分類) AS 中分類
FROM tableA
GROUP BY 基本コード
中分類を求める場合の、大分類の指定の仕方が悪いのはわかるのですが、どう直したら良いのか分からず困っています。
宜しくお願いします。
No.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を使うことになると思いますので、忘れないようにしておきたいと思います。
迅速でかつ正確に回答してくださり、本当に本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) access フォーム 大分類、小分類 1 2022/08/11 18:03
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- Excel(エクセル) コンボボックス及びリストボックスを5段階連動させる方法をご存知の方ご教授頂きたいです。 Excelで 3 2022/04/03 21:43
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- Visual Basic(VBA) 3つの条件を指定してVBAで行を削除したい 条件1:分類1が重複 条件2:分類2が重複 条件3:個数 6 2022/06/24 11:07
- 作詞・作曲 作曲家を目指して音楽理論の勉強をしていますが、あと何をすれば良いのかわからなくなりました。 楽典・実 6 2023/04/27 19:12
- Visual Basic(VBA) 該当セルに行替えを含むデータを命令文に入れて、2行に表示したい。 5 2023/07/20 11:51
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
沿線コード
-
Access終了時の最適化が失敗?
-
Excelファイルのデータをテーブ...
-
CREATE テーブルでの複数外部...
-
Order by句でバインド変数を使...
-
GROUP BYを行った後に結合した...
-
GROUP BYを使ったSELECT文の総...
-
SELECTで1件のみ取得するには?
-
SQL文で素早くNULLを除外する方法
-
Date型にNULLをセットしたい V...
-
固定値を含む結合と複数テーブ...
-
実績累計の求め方と意味を教え...
-
SELECTの結果で同一行を複数回...
-
Accessで別テーブルの値をフォ...
-
Access を×ボタンで閉じ...
-
unionの結果は集計はできないで...
-
Oracleでの文字列連結サイズの上限
-
JSPのNULLレコード表示について...
-
Excelでセルの書式設定を使用し...
-
SQL文で右から1文字だけ削除す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access終了時の最適化が失敗?
-
CREATE テーブルでの複数外部...
-
Order by句でバインド変数を使...
-
沿線コード
-
SQLServer 日付が直前のレコー...
-
10営業日前の日付を取得したい...
-
Excelファイルのデータをテーブ...
-
SQLの実行結果が異なる
-
SQLに関して
-
【SQL】またぎデータの検索の仕方
-
SQLにて縦を横へ展開
-
ヤマト急便のチェックデジット...
-
娘の学校から出た暗号解読です...
-
SQL GROUP BY
-
スペシャリストの方! 助けてく...
-
SQLで<>を使用するとき、
-
GROUP BYを行った後に結合した...
-
Accessで別テーブルの値をフォ...
-
Oracleでの文字列連結サイズの上限
-
SELECTで1件のみ取得するには?
おすすめ情報