2017-07-12 3 views
1

zu überspringen Hallo Ich habe eine Abfrage, die wo meine WHERE-Klausel das Datum 1/1/2017 und 3/1/2017 auslässt funktioniert. Allerdings möchte ich diese Abfrage für einen SSRS-Bericht verwenden, so dass es nur ein @begdate und @enddate anstelle dieser fest codierten Felder wäre. Gibt es eine Möglichkeit, diese 2 Termine nur zu überspringen?SQL-Abfrage, bestimmte Daten für ssrs

 where 
((Scheduled_Time >= '01/01/2014 00:00:00' and Scheduled_Time <= '12/31/2016 23:59:59') --filter out 1/1/2017 
    or (Scheduled_Time >= '01/02/2017 00:00:00' and Scheduled_Time <= '02/28/2017 23:59:59') --filter out 3/1/2017 
    or (Scheduled_Time >= '03/2/2017 00:00:00' and Scheduled_Time <= '06/30/2017 23:59:59')) 

Antwort

1

Entfernen Sie einfach die Daten ausgeben, und Ihre Parameter verwenden Sie dann ...

where cast(Scheduled_Time as date) <> '20170101' 
     and cast(Scheduled_Time as date) <> '20170301' 
     and Scheduled_Time >= @begdate 
     and Scheduled_Time <= @enddate 
+0

ich wusste, dass ich zu hart dachte ...... Danke. –

+0

Kein Problem @TDang. Wenn die Leistung zu einem Problem wird, sollten Sie zu Ihrer ersten Methode von> = und <= kommen, da meine Abfrage zwar sargierbar ist, aber nicht so schnell wie Ihre explizite Definition sein sollte. Hier ist und Beispiel dazu. https://dba.stackexchange.com/a/34052/95107 und ich habe es gerade so geschrieben, um es kurz zu machen. – scsimon