Ich versuche, eine Case-Anweisung innerhalb meiner WHERE-Klausel zu schreiben. Unten ist meine Abfrage. Ich möchte die Abfrage basierend auf dem Wochentag ausführen. Im Grunde, wenn es Montag ist, muss es datecreated = getdate() - 3 sein, wenn es Dienstag ein Bereich datecreated sein muss zwischen getdate() - 3 und getdate() - 1 wenn sein Wed-Freitag dann es datecreated sein muss = getDate() - 1Fallanweisung abhängig vom Wochentag innerhalb der Where-Klausel
SELECT Count(dispute_reference_no)AS reg_inc
FROM mytable
WHERE reasoncd IN ('b2', 'b3')
AND datecreated = (
CASE
WHEN Datename(weekday,Getdate()) = 'Monday' THEN dbo.Fn_getdateonly(Getdate()-3))
WHEN datename(weekday,getdate()) = 'tuesday' THEN (dbo.fn_getdateonly(getdate()-3)
AND dbo.fn_getdateonly(getdate()))
ELSE dbo.fn_getdateonly(getdate()-1)
END)
der obige Code nicht arbeitet. Es wird mir nicht erlauben, einen Bereich innerhalb der case-Anweisung hinzuzufügen.
sehr schwer zu wissen, was Sie wollen, aber Ihre Klammer sind auf Falsche Stellen –
Korrekte Art der Verwendung von 'CASE' ist' CASE WHEN ... WHEN ... END 'Ihre END ist nicht in Zusammenhang mit' Case' – demo
Vergessen Sie den Fehler. Was du meinst "muss ein Bereich datecreated sein" Sie können keinen Bereich auf einem "CASE" erstellen und mit einem einzelnen Wert vergleichen –