如何根据案例或条件在WHERE CLAUSE内添加条件?SQL根据条件添加到WHERE子句
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 <[email protected]
END
ORDER BY A.GroupName, A.Assignee, C.RecvdDate, C.CallID
我在这里的逻辑是,当@RecordType被“封闭”,在WHERE
条款必须验证封闭的日期,如果是@RecordType“中请求关闭”,那么它必须验证的解决日期。
我也尝试使用IF语句来做这件事,但我得到了同样的错误。
column1在=情况下,当条件,那么重视其他列1端。为这两种情况做这件事。 – scsimon
那么你对这个查询有什么问题? –
你能在这里展示一些样本数据和期望的输出吗? –