2015-06-13 5 views
0

У меня есть таблица АSQL с группой по и имеющей п

ID SALN INDICATOR 
    1 100 A 
    2 100 B 
    3 200 A 
    4 200 C 
    5 100 c 
    6 300 B 
    7 200 D 

мне нужно, чтобы вытащить SALN из таблицы А после того, как группировка по SALN и той группы, имеющей показатель А, В, С только

SALN 
100 

Пожалуйста, дайте мне знать SQL для этого

ответ

0
select saln 
from your_table 
group by saln 
having sum(indicator not in ('A','B','C')) = 0 

Если дополнительно нужно проверить, если A, B и C присутствуют на SALN затем добавить

and sum(indicator = 'A') > 0 
and sum(indicator = 'B') > 0 
and sum(indicator = 'C') > 0 

до конца запроса.

1
select saln 
from A 
where indicator in('A','B','C') 
group by saln 
having sum(indicator) = 100 
+0

Почему вы включили um (индикатор) = 100 – shrikanth

+0

Потому что ваш внешний дисплей выставлен на 100, а также укажите «наличие». –

0

Если вы хотите три значения, то вы можете сделать:

select saln 
from A 
where indicator in ('A', 'B', 'C') 
group by saln 
having count(*) = 3; 

Если может быть дубликаты, а затем использовать:

having count(distinct indicator) = 3 

Если вы хотите A, B, и C и других значений, то один из способов:

select saln 
from A 
group by saln 
having count(distinct case when indicator in ('A', 'B', 'C') then indicator end) = 3; 
+0

Он получил всю СОЛНУ как один из инакаторов, относящихся к каждому из тех, у кого есть A или B orC. Что мне нужно, любой сальн, связанный со всеми инсайторами A и B и C, по крайней мере один раз – shrikanth

+0

@shrikanth. , , Вы уверены, что у вас есть предложение «иметь»? (Примечание: второй код должен быть * с *, а не * где * - который я изначально имел.) –

+0

да. Я сначала попробовал, а второй. Не повезло – shrikanth

Смежные вопросы