How can I add a condition inside the WHERE CLAUSE based on a case or if condition?
SELECT C.CallID, A.GroupName,A.Assignee, C.CallStatus, C.RecvdDate, C.Urgency, C.Category, C.CallType, C.KPIreport, C.CallDesc,
DATEDIFF(DAY, C.RecvdDate,GETDATE()) [DurationInDays],
CASE
WHEN DATEDIFF(DAY, C.RecvdDate,GETDATE()) < 30
THEN 'Less than 30'
WHEN DATEDIFF(DAY, C.RecvdDate,GETDATE()) >= 30 AND DATEDIFF(DAY, C.RecvdDate,GETDATE()) < 60
THEN '30-59'
WHEN DATEDIFF(DAY, C.RecvdDate,GETDATE()) >= 60 AND DATEDIFF(DAY, C.RecvdDate,GETDATE()) < 90
THEN '60-89'
WHEN DATEDIFF(DAY, C.RecvdDate,GETDATE()) >= 90 AND DATEDIFF(DAY, C.RecvdDate,GETDATE()) < 120
THEN '90-119'
WHEN DATEDIFF(DAY, C.RecvdDate,GETDATE()) >= 120
THEN 'Over 120'
END
AS 'AgeClassification'
FROM
CallLog C
INNER JOIN Asgnmnt A ON C.CallID = A.CallID
WHERE
A.HEATSeq =(SELECT MAX(HEATSeq)FROM Asgnmnt WHERE (CallID = C.CallID))
AND UPPER(A.GroupName) = @GroupName
AND LOWER(A.EMail) IN (@Assignee)
AND UPPER(C.CallStatus) = @RecordType
AND
CASE WHEN UPPER(C.CallStatus) = 'CLOSED' THEN
C.ClosedDate >= @StartDate AND C.ClosedDate <= @EndDate
WHEN UPPER(C.CallStatus) = 'REQUEST TO CLOSE' THEN
A.DateResolv >= @StartDate AND A.DateResolv <=@EndDate
END
ORDER BY A.GroupName, A.Assignee, C.RecvdDate, C.CallID
My logic here is that, when the @RecordType is 'CLOSED', the WHERE
clause must validate the closed date and if the @RecordType is 'REQUEST TO CLOSE' then it must validate the resolved date.
I also tried doing this using IF statement but I get the same error.