Nimm alle (als Nummer 0) und dann noch die jeweils ersten (als Nummer 1) mit dazu und aus dieser Menge nur die mit der größten Nummer je Gruppe:

SELECT shop,von,bis,lager,MAX(gruppe) gruppe FROM (
SELECT shop,von,bis,lager, 0 gruppe FROM ... WHERE ... UNION
SELECT shop,von,bis,MIN(lager) lager, 1 gruppe FROM ... WHERE ...
GROUP BY shop,von,bis) X
GROUP BY shop,von,bis,lager
ORDER BY shop,von,bis,lager,gruppe desc