Я пытаюсь изолировать клиентов, которые совершали транзакции только определенного типа (наличные, карта, чек) в любой день. Возможно, у них было несколько транзакций на дату, но я хочу исключить те, которые имели определенный тип.
В моей таблице транзакций хранятся номер клиента, дата транзакции, тип транзакции, сумма. Я хочу найти клиента и дату, если единственная транзакция (или транзакции) имеет тип «карта».
Таким образом, будут возвращены только следующие данные: 3456, 26/03/2018
+----------+------------+------+--------+
| Customer | Date | Type | Amount |
+----------+------------+------+--------+
| 1234 | 26/03/2018 | Card | 10 |
| 1234 | 26/03/2018 | Cash | 20 |
| 1234 | 28/03/2018 | Cash | 20 |
| 2345 | 26/03/2018 | Cash | 20 |
| 2345 | 28/03/2018 | Cash | 20 |
| 3456 | 26/03/2018 | Card | 10 |
| 3456 | 26/03/2018 | Card | 20 |
+----------+------------+------+--------+
Это мой код, но он возвращает только пустые строки.
select t1.customer, t1.date
from transaction t1
left join transaction t2 on t1.customer = t2.customer
and t1.date = t2.date
where t1.type = 'card' and t2.type <> 'card'
and (t2.customer is null and t2.date is null) group by t1.customer, t1.date