deine aktuelle Abfrage prüft, ob nur Artikel im Warenkorb liegen, die 400 bzw. 500 in der Artikelnummer haben, dies ist für kombinierte Bedingungen ungünstig, da sobald ein 500er Artikel mit im Warenkorb liegt die Bedingung für 400 als MIN-Wert 0 also false liefert.
Bei mir hat es mit den MAX-Alternativen der beiden Bedingungen funktioniert:
Max(IF(d.ordernumber LIKE ‘400%’ OR b.modus <> 0,1,0)) AS Bed1, Max(IF(d.ordernumber LIKE ‘500%’ OR b.modus <> 0,1,0)) AS Bed2