2016-07-18 2 views
0

Я пытаюсь получить 12-месячные данные о переходе для отчета SSRS. Я не уверен, должен ли он идти в моем запросе, который ниже, или в выражении в SSRS. Поле для даты и времени называется CALL_TIME и показано только в моем предложении WHERE. Его отформатирован как '2016-04-01 13:46:00'.Прокачка 12 месяцев для служб Reporting Services

Вот мой запрос:

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 

РЕЗУЛЬТАТ

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

Это будет быстрее, если вы фильтруете в запросе, а не извлекаете все данные и затем фильтруете в клиенте. – shawnt00

+0

Спасибо, что я забыл сказать наверху, как я могу это сделать? – whitz11

ответ

1

Я думаю, вы просто должны заменить ваш где положение:

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

Отлично, подумайте, что это сделано. Спасибо Remy – whitz11

+0

@ whitz11 не забудьте принять этот ответ, если он был правильным для вас. – scsimon

0

изменить ваш ИНЕКЕ:

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

Это SQL-сервер, а не Postgresql –

Смежные вопросы