![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
aaa bbb ccc ddd eee ggg hhh
----------------------------------------------
111 111 111 111 111 111 111
112 112 112 112 112 112 111
112 113 113 113 113 113 111
114 114 114 114 114 114 111
114 114 114 114 114 114 112
114 115 115 114 114 115 111
114 115 115 114 114 115 112
116 116 116 116 116 116 111
116 116 116 116 116 116 112
116 116 116 116 116 117 111
116 116 116 116 116 117 112
118 118 118 118 118 118 118
上記のようなデータより、SQLのSELECTを使用して、以下のように抽出したいです。
抽出条件は以下が全て満たしているものとなります。
・aaa,ccc,ddd,eee,gggが重複、hhhが小さいもの
・bbbが異なるもの
aaa bbb ccc ddd eee ggg hhh
----------------------------------------------
112 112 112 112 112 112 111 ・・・(1)
112 113 113 113 113 113 111 ・・・(1)
114 114 114 114 114 114 111 ・・・(2)
114 115 114 114 114 115 111 ・・・(2)
(1)はaaa,ccc,ddd,eee,gggが重複、bbbが異なるため抽出対象
(2)はaaa,ccc,ddd,eee,gggが重複、bbbが異なるため抽出対象
また、hhhが小さいもの
以上、よろしくお願いします。
No.4ベストアンサー
- 回答日時:
#3 に私が書いた条件は合っていたのでしょうか?
合っていたとして・・・。
> 上記のSQLで可能でしょうか?
可能ではないですね。
ただし別の方法を使ったSQLでは可能です。かなり冗長ですが。
----------------------------------------
SELECT * FROM tbl a
WHERE
EXISTS (SELECT * FROM tbl b WHERE (a.aaa = b.aaa OR a.ccc = b.ccc OR a.ddd = b.ddd OR a.eee = b.eee OR a.ggg = b.ggg) AND a.bbb <> b.bbb) AND
NOT EXISTS (SELECT * FROM tbl b WHERE a.aaa = b.aaa AND a.bbb = b.bbb AND a.ccc = b.ccc AND a.ddd = b.ddd AND a.eee = b.eee AND a.ggg = b.ggg AND a.hhh > b.hhh)
ORDER BY aaa, bbb, ccc, ddd, eee, ggg
----------------------------------------
NOT EXIST句は aaa,bbb,ccc,ddd,eee,ggg が同じで hhh が小さい行が存在しない、つまり hhh が最小の行という条件を表しています。
また、window関数を使っても同じ事が出来そうです。
蛇足ですが、なかなか回答が付かないからといってマルチポストするのはやめましょう。
No.3
- 回答日時:
補足ありがとうございます。
おそらく下記のような条件になると思われますがどうでしょうか?
1. テーブルの中に aaa,ccc,ddd,eee,ggg のどれかの値が等しくbbbの値が異なる行が存在する。
2. aaa,bbb,ccc,ddd,eee,ggg が同じ行が有る場合は hhh が最小のものを抽出する。
もし、これでよろしければ、下記の様なSQLになると思います。
----------------------------------------
SELECT aaa, bbb, ccc, ddd, eee, ggg, MIN(hhh) FROM tbl a
WHERE
EXISTS (SELECT * FROM tbl b WHERE (a.aaa = b.aaa OR a.ccc = b.ccc OR a.ddd = b.ddd OR a.eee = b.eee OR a.ggg = b.ggg) AND a.bbb <> b.bbb)
GROUP BY aaa, bbb, ccc, ddd, eee, ggg
ORDER BY aaa, bbb, ccc, ddd, eee, ggg
----------------------------------------
この回答への補足
早速のご回答ありがとうございます。
(テーブル:AAA)
aaa bbb ccc ddd eee ggg hhh iii
-------------------------------
111 111 111 111 111 111 111 ii1
112 112 112 112 112 112 111 ii2
112 113 113 113 113 113 111 ii3
114 114 114 114 114 114 111 ii4
114 114 114 114 114 114 112 ii5
114 115 115 114 114 115 111 ii6
114 115 115 114 114 115 112 ii7
116 116 116 116 116 116 111 ii8
116 116 116 116 116 116 112 ii9
116 116 116 116 116 117 111 ii0
116 116 116 116 116 117 112 ii1
118 118 118 118 118 118 118 ii2
のようにテーブル:AAAにiiiを追加し、
aaa bbb ccc ddd eee ggg hhh iii
-------------------------------
112 112 112 112 112 112 111 ii2
112 113 113 113 113 113 111 ii3
114 114 114 114 114 114 111 ii4
114 115 115 114 114 115 111 ii6
を抽出する場合(条件にないiiiも抽出する)も、
上記のSQLで可能でしょうか?
よろしくお願いします。
No.2
- 回答日時:
提示されている条件に不明な点が有りますので確認です。
> ・aaa,ccc,ddd,eee,gggが重複、
「aaa,ccc,ddd,eee,ggg が全て同じ値」という事で良いでしょうか?
> ・hhhが小さいもの
何と比べて小さいのでしょうか?
aaa,ccc,ddd,eee,ggg と比べてでしょうか?
それとも他の全てのカラムと比べるのでしょうか?
あるいは決まった数と比べてでしょうか?
> ・bbbが異なるもの
何と異なるのでしょうか?
aaa,ccc,ddd,eee,ggg の値と異なるのでしょうか?
それとも他の全てのカラムの値と異なるのでしょうか?
この回答への補足
回答ありがとうございます。
質問が適切ではなかったので以下のご質問にコメントいたします。
> > ・aaa,ccc,ddd,eee,gggが重複、
>「aaa,ccc,ddd,eee,ggg が全て同じ値」という事で良いでしょうか?
御認識の通りです。
> > ・hhhが小さいもの
> 何と比べて小さいのでしょうか?
> aaa,ccc,ddd,eee,ggg と比べてでしょうか?
> それとも他の全てのカラムと比べるのでしょうか?
> あるいは決まった数と比べてでしょうか?
「aaa,ccc,ddd,eee,ggg が全て同じ値」のものに対して一番小さい値となります。
114 114 114 114 114 114 111 ・・・A
114 114 114 114 114 114 112 ・・・B
114 115 115 114 114 115 111 ・・・C
114 115 115 114 114 115 112 ・・・D
でいいますと、AとB、CとDふぁ条件に一致してその中でhhhが小さい
AとCを抽出したいということです。
> > ・bbbが異なるもの
> 何と異なるのでしょうか?
> aaa,ccc,ddd,eee,ggg の値と異なるのでしょうか?
> それとも他の全てのカラムの値と異なるのでしょうか?
「aaa」が一致しているものの中でbbbが異なるものを指しています。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ¥マークを含むパスの処理について(マクロ、または関数) 2 2022/12/25 02:11
- その他(データベース) カラム上の重複を削除するクエリを教えてください 3 2022/04/12 14:11
- SQL Server ACCESSで3ファイルを結合して、表を作成するやり方を教えて下さい。 17 2022/08/15 20:34
- SQL Server ACCESSで複数テーブルを結合して、リストを作る方法を教えてください。 2 2022/08/12 19:32
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- Visual Basic(VBA) 【VBA】特定の文字で改行(次の行)に行きたい。 3 2022/04/11 17:20
- Perl perl このテキストファイルを簡単に配列に入れるには? 2 2022/04/27 20:24
- その他(Microsoft Office) パワークエリの複数ファイルのデータ統合について 3 2022/07/14 17:06
- JavaScript 指定したパスが現URLに含まれていたら特定要素を削除するJavascriptのコードを教えてください 2 2023/04/27 17:58
- Visual Basic(VBA) 複数シートの複数列に入力されているデータを重複なしで抽出するVBAを作りたいです。 9 2022/06/17 10:33
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CREATE VIEWについて
-
order byで並び変えし最大値の...
-
SELECT INTOで一度に複数の変数...
-
フラグをたてるってどういうこ...
-
MySQLで数字の値のもののみを取...
-
UPDATEで既存のレコードに文字...
-
【SQL】他テーブルに含まれる値...
-
ACCESS クエリーでソートの不具合
-
[materialized]マテリアライズ...
-
テーブル定義書(Oracle) 【IX】...
-
Accessで今日から5日後
-
ACCESSにおいてスキーマとは
-
固定長のデータをmysqlで取り込...
-
OracleとSQL ServerのSQL文上で...
-
オラクルのUPDATEで複数テーブル
-
右向き、左向きの速度が最大と...
-
ExcelのMatch関数のようなもの...
-
PL/SQLの初歩的な質問その2
-
csvデータ不要列の削除をbatフ...
-
CSVファイルを読み込んでテーブ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
joinの場合のテーブル名の別名...
-
2つの列からの最大値取得
-
複数行の結果を単一列に連結
-
SQLで期間をずらした集計処理
-
SQLのこと:distinctして並び替...
-
SQL文の長さ制限について
-
Postgresql Mecabでの解析について
-
SQLで2年連続で値が上昇した年...
-
PostgreSQL で自動採番する方法
-
SQL 複数条件を設定
-
SQL 複数条件を設定
-
【SQL】他テーブルに含まれる値...
-
SELECT INTOで一度に複数の変数...
-
フラグをたてるってどういうこ...
-
スキーマ
-
sqlに記述できない文字
-
オラクルのUPDATEで複数テーブル
-
Accessで今日から5日後
-
timestampのデータはどのように...
-
UPDATEで既存のレコードに文字...
おすすめ情報