テーブルの項目Aが同一のレコードが2件でかつ、その同一のレコードの項目Bの内いずれか一方が’2’であるレコードを抽出するにはどの様なSQL(ORACLE)を作成すればいいでしょうか。教えてください。



項目A  項目B
3   2
3      2
4    2
5       3
5    4
6   2  ← 抽出対象
6   3  ← 抽出対象
7   1
7   1
7   2
8   1  ← 抽出対象
8   2  ← 抽出対象
9   1
10       2
10       2 

回答の条件
  • 1人5回まで
  • 登録:2008/02/24 00:27:07
  • 終了:2008/02/24 01:09:11

回答(2件)

id:fumikef No.1

fumikef回答回数41ベストアンサー獲得回数22008/02/24 00:50:22

ポイント35pt

すぐ思いつくのは、こんな感じ。

もっと効率のいい方法があるかな・・・


select 項目A, 項目B

from テーブル

where 項目A in

( select 項目A from テーブル group by 項目A having count(項目B) = 2 )

and 項目A in

( select 項目A from テーブル where 項目B = '2')

id:yas0527yas0527

回答ありがとうございます。当SQLですと項目A=’3’のレコードも抽出対象になってしまいます。(質問の記述に不備(いずれか一方)がありましたことお詫びします。)

2008/02/24 01:01:29
id:fumikef No.2

fumikef回答回数41ベストアンサー獲得回数22008/02/24 01:02:04

ポイント35pt

失礼しました1つ条件の見落としがありました。

「項目Bの内いずれか一方が’2’」というのは

「項目Bの内いずれか一方だけが’2’」なんですね。

つまり両方とも’2’のものは除くということで・・・

コメント欄が開放されてないので、再度回答させてもらいました。


select 項目A, 項目B

from テーブル

where 項目A in ( select 項目A from テーブル group by 項目A having count(項目B) = 2 )

and 項目A in ( select 項目A from テーブル where 項目B = '2')

group by 項目A, 項目B

having count(*) = 1


最初の回答に、group by と having を追加しただけですけど。

id:yas0527yas0527

ご回答ありがとうございました。助かりました。

2008/02/24 01:08:29

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません