Если вы хотите использовать GROUP BY
, вы должны сначала group by name, date
и установить условия в предложении HAVING
, но также вы должны использовать DISTINCT
, чтобы результаты не содержали повторяющихся имен:
select distinct name
from tablename
group by name, date
having sum(code = 'ABC120') > 0 and sum(code in ('ABC305', 'ABC306')) = 0;
Вы можете получить такие же результаты с помощью EXISTS
:
select distinct t.name
from tablename t
where t.code = 'ABC120'
and not exists (select 1 from tablename where name = t.name and date = t.date and code in ('ABC305', 'ABC306'))