Делаете запрос с группировкой по
cheque_id
и
ROUND(qty,2)
и соответствующим
HAVING
, а потом соединяете его с основной таблицей.
Добавил в первый заказ позицию, которая не отвечает условию по количеству.
DECLARE @items_sales TABLE ( [Date] DATE, cheque_id INT, item INT, position INT, qty REAL )
INSERT @items_sales VALUES
('2022-09-12', 1, 1, 1, 0.237),
('2022-09-12', 1, 2, 2, 0.238),
('2022-09-12', 1, 3, 3, 0.322),
('2022-09-12', 1, 4, 4, 0.239),
('2022-09-12', 2, 1, 1, 0.210),
('2022-09-12', 2, 2, 2, 0.210),
('2022-09-12', 3, 5, 1, 0.240),
('2022-09-12', 4, 9, 1, 0.322),
('2022-09-12', 4, 8, 2, 0.322)
SELECT *
FROM @items_sales AS Iteams
JOIN ( SELECT cheque_id, ROUND( qty, 2) AS RoundQty
FROM @items_sales
GROUP BY cheque_id, ROUND( qty, 2)
HAVING COUNT(*) >= 3 ) AS IteamCount
ON IteamCount.cheque_id = Iteams.cheque_id
AND IteamCount.RoundQty = ROUND( qty, 2)
ORDER BY [Date], Iteams.cheque_id, item