Ich bin kein SQL-Experte, aber versuchen Sie Folgendes:
SELECT [Circuit Number]
,[Request Number]
,[RequestDate]
FROM Requests
WHERE RequestType LIKE 'Cancel%'
AND DATEDIFF(mm,Requestdate , GETDATE())=1
AND DATEDIFF(yy,Requestdate, GETDATE())=0
Sehen Sie sich meine Fiddle-Demo an
Erklärung:
DATEDIFF(mm,Requestdate , GETDATE())=1 (Only Request previous Month of the Current Date)
Nächste Bedingung:
DATEDIFF(yy,Requestdate, GETDATE())=0 (Only in same year as Current Date)
Wenn Sie jedoch nur den Vormonat möchten, unabhängig davon, ob es sich um dasselbe Jahr wie das aktuelle Datum handelt oder nicht, können Sie die zweite Bedingung entfernen, z. B.:
SELECT [Circuit Number]
,[Request Number]
,[RequestDate]
FROM Requests
WHERE RequestType LIKE 'Cancel%'
AND DATEDIFF(mm,Requestdate , GETDATE())=1
Sehen Sie sich die Demo an dafür.
Beispiel:CurrentDate ist 2013-01-19
dann irgendein December 2012
Die Anfrage wird aufgenommen, obwohl sie nicht aus demselben Jahr, sondern offensichtlich aus dem Vormonat stammt.