Tach!
könnte man nicht sagen,
WENN Datum != 1.11.2016 THEN 31.10.2016 ?
An welcher Stelle willst du das sagen können?
So ein DBMS arbeitet mengenorientiert. Du kannst da nicht in IFs und Schleifen denken, um Lösungen zu finden, sondern du muss Bedingungen definieren, was in der Menge enthalten sein soll. Du willst, wenn die Menge der Datensätze von heute leer ist (sprich: COUNT(*) = 0), andere Datensätze haben. Man kann das, denke ich, über UNION machen. Die erste Query liefert Daten mit Datum von heute, die andere liefert Daten von gestern, wenn die Menge von heute leer ist. Die erste Query ist ziemlich geradeaus. Sie liefert entweder etwas oder nichts. Der Trick muss in der zweiten Menge zur Anwendung kommen. Die muss Datensätze liefern, deren Datum von gestern ist und wenn eine Subquery mit Count(*) = 0 liefert für Datensätze mit Datum von heute.
Bei MySQL würde ich die Subquery separat ausführen, deren Ergebnis in einer nutzerdefinierten Variable ablegen und die statt der Subquery im zweiten Teil verwenden. MSSQL hat sicher auch Variablen, aber das weiß ich nicht.
Obenstehendes Konstrukt kann man auch noch über ein weiteres UNION mit einer Abfrage mit Datum von vorgestern erweitern. Aber dann weitergehen zu wollen, bis mal ein Tag mit Daten kommt, endet in einem unwartbaren Gebilde. Dann wäre wirklich mal Zeit, sich mit Stored Procedures zu befassen, oder diese Logik in die abfragende Umgebung zu legen.
dedlfix.