Этот запрос - если Я правильно понял, то этот запрос - Реляционное деление. Примерно так:
with T as
(select X.v
from (values (0), (1), (5), (7), (13)) as X(v))
, A as
(select
X.id, X.v
from (values (1, 0), (1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (1, 7)
, (1, 8), (1, 9), (1, 10), (1, 11), (1, 12), (1, 13), (1, null)
, (2, 1), (2, 5), (2, 13)
, (3, 0), (3, 3)
, (4, 0), (4, 1), (4, 5), (4, 7), (4, 13), (4, null)
, (5, null)) as X(id, v))
, Q as
(select
x.id, x.v
from A as x
inner join T as t
on x.v = t.v)
select
a.id, a.v
from A as a
where exists(select null as v
from Q as x
where
x.id =
a.idand not exists(select null as v
from T as t
left join (select
d.id, d.v from Q as d where
d.id =
x.id) as q
on t.v = q.v
where q.v is null))
Поясню, T - выборка позиций по чекам, A - сами чеки, соответственно выводится все чеки в которых есть исключительно все позиции T со всеми данными. Можно дальше с этим иметь дело. Сортировки никакой нет, но если добавить подсказку по типу force order, то могут и появится промежуточные для hash/merge джойнов. Но не суть.
dbfiddle.uk