Как выбрать отдельных клиентов, у которых есть оба атрибута «S» и «P» в SQL?

В таблице SQL у меня есть два поля среди многих других: CustomerID и TransactionType. CustomerID — это уникальный номер, который может повторяться при каждой транзакции. Каждая транзакция является либо «S», либо «P».

введите здесь описание изображения

Я хочу выбрать разные идентификаторы клиентов, которые имеют как «S», так и «P» в SQL. Таким образом, в приведенной выше таблице мои ожидаемые возвращаемые значения равны 100 и 102. Как я могу это сделать?


person J4ce    schedule 22.05.2017    source источник
comment
Пожалуйста, прочитайте meta.stackoverflow.com/questions/285551/ и принятый ответ   -  person a_horse_with_no_name    schedule 22.05.2017
comment
Microsoft SQL-сервер   -  person J4ce    schedule 22.05.2017


Ответы (1)


Для этого можно использовать агрегацию:

select customerid
from your_table
where transactionType in ('S', 'P')
group by customerid
having count(distinct transactionType) = 2;

Вы можете потерять предложение where, если тип транзакции может быть только «S» или «P» (даже не нулевым).

person Gurwinder Singh    schedule 22.05.2017
comment
Спасибо! Это имеет смысл! - person J4ce; 22.05.2017