1

これをSQLで書くには助けが必要です:

テーブルが 1 つあり、Chars A、B、または C で No を選択したいのですが、同じ No に対して A と B がある場合は B のみを表示し、そうでない場合はすべてを表示する必要があります。

擬似コード:

SELECT *
  FROM Table1
  WHERE IF EXISTS (Char = A and Char = B)
    THEN Char IN (B, C)
    ELSE Char IN (A, B, C)

例:

表1

ID  No     Char
1   10     A
2   10     B
4   10     C
5   11     A
6   11     D
7   12     C

結果が欲しい:

ID  No     Char
2   10     B
4   10     C
5   11     A
7   12     C

私が必要とするものは十分に明確ですか?

4

1 に答える 1

3
select t1.Id, t1.No, t1.Ch from Table1 t1
where t1.Ch IN ( 'B', 'C')
UNION
select t1.Id, t1.No, t1.Ch from Table1 t1
where t1.Ch ='A' 
and not exists (select null from Table1 t2 where t2.No = t1.No  and t2.Ch='B')

Charは予約語である可能性があるため、ChでCharを変更しました...

SQL Serverでテストされていますが、クエリはANSISQLだと思います

http://sqlfiddle.com/#!3/f2145/12

また

select t1.Id, t1.No, t1.Ch from Table1 t1
where t1.Ch IN ( 'B', 'C')
OR (t1.Ch ='A'
and not exists (select null from Table1 t2 where t2.No = t1.No  and t2.Ch='B'))
于 2012-05-31T15:49:11.487 に答える