Ich habe die Anforderung, Datensätze bis zu unterschiedlichen Daten zu überprüfen, abhängig davon, an welchem Wochentag sie sich gerade befindet.SQL WHERE abhängig vom Wochentag
An einem Freitag brauche ich, um die gesamte nächste Woche zu sehen, bis Sonntag nach dem nächsten. An jedem anderen Tag sollte die aktuelle Woche bis zum kommenden Sonntag überprüft werden.
Ich habe die unten, aber es funktioniert nicht wegen Syntaxfehler. Ist es möglich, eine CASE WHEN
innerhalb einer WHERE
Klausel zu tun?
WHERE
T0.[Status] IN ('R','P')
AND
CASE
WHEN DATEPART(weekday,GETDATE()) = '5'
THEN T0.[DueDate] >= GETDATE() AND <= DATEADD(day, 15 - DATEPART(weekday, GetDate()), GetDate())
WHEN DATEPART(weekday, GETDATE()) != '5'
THEN T0.[DueDate] >= GETDATE() AND <= DATEADD(DAY ,8- DATEPART(weekday, GETDATE()), GETDATE())
END
Ja, es ist möglich - aber es ist im Allgemeinen eine schlechte Idee. Verwenden Sie stattdessen UND/ODER. – jarlh
Sind Sie absolut sicher, dass Sie Ihre Anforderungen richtig formuliert haben? Beachten Sie, dass sie bedeuten, dass Sie am Freitag neun Tage vorausschauen müssen, aber am Samstag nur eins. Wenn Sie stattdessen am Samstag acht Tage vorausschauen müssen, können Sie einfach Ihre Logik sehen: bis zum nächsten Freitag, plus zwei zusätzliche Tage. – hvd
Ja, hvd. Es scheint falsch, aber so wurde es mir beschrieben. Ich denke, die Idee ist, dass es am Wochenende sowieso nicht überprüft wird, also ist das in Ordnung. Allerdings sehe ich Ihren Standpunkt und das wäre wahrscheinlich jetzt viel einfacher, wenn ich darüber nachdenke. – coblenski