Wie kann ich eine Bedingung innerhalb der WHERE CLAUSE basierend auf einem Fall oder wenn Bedingung hinzufügen?SQL hinzufügen zu WHERE-Klausel basierend auf Bedingung
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
Meine Logik ist hier, dass, wenn die @RecordType ‚ZU‘ ist, wird die WHERE
Klausel muss das geschlossene Datum bestätigen und wenn die @RecordType ist ‚REQUEST TO CLOSE‘ dann muss es das aufgelöste Datum bestätigen.
Ich habe auch versucht, dies mit IF-Anweisung, aber ich bekomme den gleichen Fehler.
Wo column1 = Fall lesen, wenn die Bedingung dann column1 Ende schätzen anderes. Tun Sie dies für beide Fälle. – scsimon
Was ist also Ihr Problem bei dieser Abfrage? –
können Sie hier einige Beispieldaten und die gewünschte Ausgabe anzeigen? –