2016-07-18 6 views
0

Ich versuche, 12 Monate rollende Daten für einen SSRS-Bericht zu erhalten. Ich bin nicht sicher, ob es in meiner Abfrage, die unten ist, oder in einem Ausdruck auf SSRS gehen soll. Das Feld für Datum und Uhrzeit heißt CALL_TIME und ist nur in meiner WHERE-Klausel enthalten. Es ist formatiert wie '2016-04-01 13:46:00'.Rolling 12 Monate für Reporting Services

Hier ist meine Frage:

select 

Street 
Town 
Incidents 
IncidentType A 
IncidentType B 
IncidentType C 

FROM OPENQUERY 
(POSTGRESQL, 

Street 
Town 
Incidents 
IncidentType A 
IncidentType B 
IncidentType C 

FROM 
(

select 

COUNT(I.INC_NUM) as Incidents, 

COUNT(case when i.INC_TYPE = ''A'' THEN 1 
     end) 
"IncidentType A" 
COUNT(case when i.INC_TYPE = ''B'' THEN 1 
     end) 
"IncidentType B" 
COUNT(case when i.INC_TYPE = ''C'' THEN 1 
     end) 
"IncidentType C" 

FROM Table i 

WHERE I.CALL_TIME >= ''2016-01-01'' 

GROUP BY i.INC_NUM 

) i 

RESULT

Street  Incidents  IncidentType A IncidentType B IncidentType C 
back lane  5    2     0     3 
+1

Es wird schneller, wenn Sie in der Abfrage filtern, anstatt alle Daten abzurufen und dann im Client zu filtern. – shawnt00

+0

Danke, was ich oben vergessen habe ist, wie gehe ich vor? – whitz11

Antwort

1

Ich glaube, Sie müssen nur Ihre ersetzen where-Klausel:

 WHERE I.CALL_TIME >= (now()-('12 months'::interval)) 
+0

Großartig, denke, dass es getan hat. Danke Remy – whitz11

+0

@ whitz11 sicher sein, diese Antwort zu akzeptieren, wenn es für Sie richtig war. – scsimon

0

Änderung Ihrer where-Klausel:

WHERE I.CALL.TIME between DATEADD(Year, -1, getdate()) AND getdate() 
+1

Das ist SQL-Server, nicht Postgresql –