Holen Sie sich zuerst die tour_id
s, die den Bedingungen entsprechen:
SELECT Tour_ID
FROM myTable
WHERE organisation LIKE 'Ikea'
GROUP BY Tour_ID
HAVING LEAST(COALESCE(MIN(A), '2019-01-01'), COALESCE(MIN(B), '2019-01-01'), COALESCE(MIN(C), '2019-01-01'), COALESCE(MIN(D), '2019-01-01')) >= '2018-05-01' AND
LEAST(COALESCE(MIN(A), '2019-01-01'), COALESCE(MIN(B), '2019-01-01'), COALESCE(MIN(C), '2019-01-01'), COALESCE(MIN(D), '2019-01-01')) < '2018-06-01';
Fügen Sie dies dann in eine Abfrage ein, um die ursprünglichen Zeilen zu erhalten. Hier ist eine Möglichkeit:
select t.*
from mytable t join
(SELECT organisation, Tour_ID
FROM myTable
WHERE organisation LIKE 'Ikea'
GROUP BY organisation, Tour_ID
HAVING LEAST(COALESCE(MIN(A), '2019-01-01'), COALESCE(MIN(B), '2019-01-01'), COALESCE(MIN(C), '2019-01-01'), COALESCE(MIN(D), '2019-01-01')) >= '2018-05-01' AND
LEAST(COALESCE(MIN(A), '2019-01-01'), COALESCE(MIN(B), '2019-01-01'), COALESCE(MIN(C), '2019-01-01'), COALESCE(MIN(D), '2019-01-01')) < '2018-06-01'
) tt
ON tt.tour_id = t.tour_id AND
tt.organisation = t.organisation;