2015-05-09 4 views
0

Закреплено о том, как запросить этот набор результатов.SQL Query Help - Пояснение ниже

A  B  C 
162  0  NULL 
162  1  NULL 
162  2  NULL 
163  0  000 
163  1  000 
163  2  000 
164  0  000 
164  1  NULL 
164  2  NULL 

Я хочу, чтобы показать только эти результаты

A  B  C 
162  0  NULL 
162  1  NULL 
162  2  NULL 
164  0  000 
164  1  NULL 
164  2  NULL 

Я не хочу возвращать результаты, если все уникального экземпляра столбца А имеет значение. Таким образом, в этом примере новый результирующий набор удалил 163 из набора результатов, поскольку все строки, содержащие 163, имели значение (которое составляло 000). Другие показывают, что один экземпляр строки содержит NULL, и все строки, уникальные для него, должны отображаться.

Я пробовал вложенные запросы и играл с GROUP BY, но не смог его взломать.

Любые советы?

спасибо.

ответ

1

Используйте EXISTS, чтобы найти эти строки:

select A, B, C 
from tablename t1 
where EXISTS (select 1 from tablename t2 
       where t1.A = t2.A 
       and t2.C IS NULL) 

Или сделать JOIN:

select A, B, C 
from tablename t1 
    JOIN (select DISTINCT A 
     from tablename 
     where C IS NULL) t2 ON t1.A = t2.A