SQL - выбирать записи только с неактивным статусом - PullRequest
0 голосов
/ 05 мая 2011

У меня есть следующее требование.

**---Table A---**
CustID_1   S1    
CustID_1   S2    
CustID_2   S2    
CustID_2   S3    
CustID_3   S4 
CustID_3   S5


**---Table B---**
S1     1
S2     0
S3     1
S4     0
S5     0

Я хочу выбрать все CustID, где все B.S = 0. Таким образом, в вышеприведенном случае должен быть выбран только CustID_3. CustID_1, CustID_2 имеют как минимум S = 1, поэтому они не должны появляться в результате.

Ценю любую помощь.

Спасибо!

Ответы [ 3 ]

1 голос
/ 05 мая 2011

Попробуйте это;он возвращает все custID, которые отсутствуют в B и , для которых значение BS равно 0:

SELECT
    A.custID
FROM
    A
WHERE
    A.custID NOT IN
    (
        SELECT
            B.custID
        WHERE
            B.S <> 0
    )
1 голос
/ 06 мая 2011
SELECT a.CustID
FROM TableA a
  INNER JOIN TableB b ON a.S = b.S
GROUP BY a.CustID
HAVING SUM(b.S) = 0
1 голос
/ 05 мая 2011

Непроверенные:

SELECT custid
  FROM A a1 
 WHERE NOT EXISTS
       (SELECT custid
          FROM A a2 JOIN B ON (a2.col2 = B.col1)
         WHERE B.col2 = 1
           AND a2.custid = a1.custid)
...