dポイントプレゼントキャンペーン実施中!

いつもありがとうございます。

質問させて下さい。

以下のテーブルより、S1が同値で、Codeに1と0が混じっている場合、SQLでS1を取得したいのです。

NoS1Code
13001
23011
33000
43010
53021
63020
73021
83030
93041
103050
113050
(Noはキー)

望む結果
S1
300
301
302


どういうSQLを組めば実現可能なのでしょうか?
有識者の方、ご享受宜しくお願い申し上げます。

※VBA等プログラミングが入っても問題ありません

A 回答 (5件)

select s1 from テーブル名


where code in ( 0, 1)
group by s1
having count( distinct code ) > 1

でどうでしょう。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

>having count( distinct code ) > 1
こういう使い方が出来るのを全く知りませんでした。

大変参考になります。ありがとうございます。

お礼日時:2012/06/07 18:59

こんちは。



>>どれがどれか繋がっていて分からない(汗)

まぁ、同意ですが、こうですかね。

No/S1/Code
1/300/1
2/301/1
3/300/0
4/301/0
5/302/1
6/302/0
7/302/1
8/303/0
9/304/1
10/305/0
11/305/0

え?違う?
知らんがなっ・w・;


まぁ、違わなかった前提。で前進。


select
distinct a.S1
from
hoge as a
inner join
hoge as b
on
a.code = 0
and
b.code = 1
and
a.S1 = b.S1


hogeの中で、codeが1のものと
hogeの中で、codeが0のものを
ひっぱり出してきて、S1が同じ値。って条件で結合してやればよい。

ただし、S1が複数出てくるのでdistinctで重複を削ってやる。


え?いつも使ってるSQLの文法と違う?
オラクルだかMySQLだかポスグレだか知りませんが、指定しない方が悪いんだっ_no

上は、SQLServerでは確認済みです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
かつご推察ありがとうございます。

Code=1のテーブルと、Code=0の別名テーブルの処理ですね!

大変参考になります。ありがとうございます。
>上は、SQLServerでは確認済みです。
ありがとうございます♪

お礼日時:2012/06/07 18:58

ベタですが、こんな感じかな?



SELECT S1
FROM テーブル1
GROUP BY S1
HAVING Min(CODE)=0 AND Max(CODE)=1
ORDER BY S1;
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

シンプルですが、分かり易いです。
HAVINGでCode=0と=1の存在を確かめるのですね!

大変参考になります。ありがとうございます。

お礼日時:2012/06/07 18:56

SELECT DISTINCT S1 FROM テーブル名 T1


WHERE EXISTS(SELECT ' ' FROM テーブル名 T2
WHERE T2.S1=T1.S1 AND T2.Code=1) AND Code=0
または
SELECT DISTINCT T1.S1 FROM テーブル名 T1
INNER JOIN テーブル名 T2
ON T2.S1=T1.S1 AND T1.Code=0 AND T2.Code=1
です。
    • good
    • 0
この回答へのお礼

ご返信ありがとうございます。

EXISTSを使用する方法と、別名テーブルを作成し、Code=0と=1の混在を見つけ出すと。

大変参考になります。
ありがとうございます。

お礼日時:2012/06/07 18:54

NoS1Code


13001
23011
33000
43010
53021
63020
73021
83030
93041
103050
113050

どれがどれか
繋がっていて分からない(汗)

この回答への補足

返信ありがとうございます。

ですよね^^;
文字間をタブでしたら、見事連なってしまいました
すみません

No S1 Code
1 300  1
2 301  1
3 300  0
4 301  0
5 302  1
6 302  0
7 302  1
8 303  0
9 304  1
10 305 0
11 305 0

空白大丈夫かな…

補足日時:2012/06/07 18:49
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!