2013-09-05 3 views
0

В настоящее время я пытаюсь создать отчет с фильтром, который имеет диапазон дат (DateTO и DateFrom). Проблема заключается в том, что отчет должен иметь возможность для диапазона дат как необязательный. Следующим является мой текущий SQL. Пожалуйста, посоветуйте, как я могу изменитьОтчеты SSRS с диапазонами дат необязательны

SELECT 

PG.Name AS [Project Group], 
PSG.Name AS [Project Sub Group], 
P.ReferenceNumber, 
P.ReferenceNumber + '/' + P.ProjectTitle AS [Project Description], 
CASE WHEN W.Removed = 1 
THEN 'Yes' 
ELSE 'No' 
END AS [Removed], 
W.Description, 
W.CommunicationStartDate, 
PR.Name as [Person Responsible], 


CASE WHEN W.CommunicationStartDate IS NULL 
THEN 'Not Specified' 
ELSE CONVERT(NVARCHAR, W.CommunicationStartDate, 103) 
END AS [Deadline], 
ES.Name AS [Status], 
CASE WHEN W.Estimate IS NOT NULL 
THEN W.Estimate 
ELSE 0 
END AS [Estimate] 

FROM dbo.ProjectWorkplan W 
    INNER JOIN dbo.Project P 
    INNER JOIN dbo.ProjectSubGroup PSG 
    INNER JOIN dbo.ProjectGroup PG ON PSG.ProjectGroupId = PG.ProjectGroupId 
    ON P.ProjectSubGroupId = PSG.ProjectSubGroupId 
ON W.ProjectId = P.ProjectId 
INNER JOIN dbo.PersonResponsible PR ON W.PersonResponsibleId = PR.PersonResponsibleId 
INNER JOIN dbo.ElementStatus ES ON W.ElementStatusId = ES.ElementStatusId 

WHERE P.DateCompleted IS NULL AND W.Removed = 0 
AND W.CommunicationStartDate BETWEEN @DateFrom AND @DateTo 


AND ES.NAME in (@ActionRequired, @FollowUp, @OnHold, @UrgentAction, @Waiting,@Complete) 


ORDER BY PG.Name, PSG.Name, P.ReferenceNumber, W.Removed, W.CommunicationStartDate 

ответ

0

Вы можете проверить параметры даты для NULL, и если использовать их только оба они действительны:

AND (@DateFrom IS NULL OR @DateTo IS NULL OR W.CommunicationStartDate BETWEEN @DateFrom AND @DateTo)

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