Похоже
SELECT routing_id
FROM ec.production_autoroutingtag
WHERE (tag_type, tag_value) IN (('mounting_type', 'smd'),
('x_ray', 'true'),
('depaneling', 'false'))
GROUP BY routing_id
HAVING COUNT(DISTINCT tag_type, tag_value) = 3
ОБНОВЛЕНИЕ
Если вам нужно проверить значение с условием, отличным от равенства, то вы должны проверить каждую пару (тэг, значение), отдельно комбинирующее условия с ИЛИ:
SELECT routing_id,
COUNT( tag_type)
FROM ec.production_autoroutingtag
WHERE (tag_type, tag_value) IN (('mounting_type','qfn'), ('panel_qty','1'))
OR (tag_type = 'bom' and tag_value >= '10')
OR (tag_type = 'cpl' and tag_value >= '158')
GROUP BY routing_id
HAVING COUNT(tag_type) = 4;
Обратите внимание - сравнение «больше или равно» будет выполнено как СТРОКИ (т. е. «5» даст ИСТИНА)! если вам нужно сравнить как числа, вы должны использовать правильное преобразование типов для значений полей и правильный тип данных для ссылочного значения:
SELECT routing_id,
COUNT( tag_type)
FROM ec.production_autoroutingtag
WHERE (tag_type, tag_value) IN (('mounting_type','qfn'), ('panel_qty','1'))
OR (tag_type = 'bom' and tag_value + 0 >= 10)
OR (tag_type = 'cpl' and tag_value + 0 >= 158)
GROUP BY routing_id
HAVING COUNT(tag_type) = 4;