如何根據案例或條件在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
那麼你對這個查詢有什麼問題? –
你能在這裏展示一些樣本數據和期望的輸出嗎? –