SSRS를 사용하는 발권 시스템에 대한 보고서를 작성하려고합니다. "인시던트 바디"테이블과 "인시던트 세부 사항"테이블 모두에서 필드를 가져오고 있습니다. 내가 찾고있는 것은 티켓이 SLA를지나 고객에게 응답했는지 여부입니다.SSRS SQL 쿼리의 결과 제한
내가 SLA 과거 티켓을 검사하고 두 가지 방법 :
1) 티켓은 SLA 기간이 지났이며, 소정의 유형
2) 티켓이 소정의 일치하는 상세 기록이 일치하는 상세 기록이 없다 유형이지만 SLA 날짜 이후였습니다
아래의 CTE 섹션을 만들었지 만 그 결과를 가장 오래된 일치하는 행/레코드로 줄이는 방법에 어려움을 겪고 있습니다. 티켓은 보고서에 한 번만 표시되어야합니다. 예를 들어
:
조니 블로그 2016년 1월 1일에 CONTACTED_TM의 RECORDTYPE를 사용하여 티켓을 업데이트합니다. SLA는 2015 년 12 월 31 일이었습니다. 다음 날 (1/20/20) 그는 EMAILOUT 레코드 유형을 사용하여 TM을 전자 메일로 보냅니다. CTE는이 두 행/레코드를 반환합니다. 나는 오직 첫 번째 결과 만 원한다.
내 쿼리 코드는 다음과 같습니다. CTE에서 SELECT TOP 1을 사용하려고 시도했지만 결과가 반환되지 않습니다.
WITH CTE (Date, [Action ID], Description, Note, [Login ID], [Seq.Group], [Incident #], ResponseDue) AS
(
SELECT Date, [Action ID], [Incident Details].Description, [Incident Details].Note, [Login ID], [Incident Details].[Seq.Group], [Incident Details].[Incident #], [Incident].[Due Date & Time:] as ResponseDue
FROM [_SMDBA_].[Incident Details]
JOIN [_SMDBA_].[Incident]
ON [Incident Details].[Incident #] = [Incident].[Incident #]
WHERE ([Action ID] = 'CONTACTED_TM' OR [Action ID] = 'TM_UNAVAILABLE' OR ([Action ID] = N'EMAILOUT' AND _SMDBA_.[Incident].[Client Email] in ([Email To Email From])))
--AND Date >= Incident.[Due Date & Time:]
)
SELECT
I.[Incident #]
,I.[Group Name]
,I.[Seq.Group] as IncidentGroupSeq
,I.[Due Date & Time:] as ResponseDue
,I.[Priority ID:]
,I.[Priority Duration]
,I.[Subject ID]
,I.[Open Date & Time] as OpenDate
,I.[Impact ID:] as Impact
,I.[Urgency ID:] as Urgency
,CTE.[Action ID]
,CTE.Description
,CTE.Note
,CTE.[Login ID]
,CTE.Date AS IncidentDetailsDate
,CTE.[Seq.Group] as DetailsGroupSeq
,_SMDBA_.CalcWorkingSeconds(1001,[Due Date & Time:],CTE.Date) as WorkingSecs
,CASE
WHEN CTE.date >= I.[Due Date & Time:] THEN 'Response was Late'
WHEN CTE.Date IS NULL THEN 'There was no response'
WHEN CTE.date <= I.[Due Date & Time:] THEN 'Met SLA'
WHEN I.[Due Date & Time:] IS NULL THEN 'No Response date set'
END AS SLAStatus
FROM [_SMDBA_].Incident I
LEFT OUTER JOIN CTE
ON CTE.[Incident #] = I.[Incident #]
WHERE
I.[Open Date & Time] >= @StartDate
AND I.[Open Date & Time] <= @EndDate
AND I.[Group Name] in (@Group)
AND I.[Impact ID:] in (@Impact)
AND I.[Urgency ID:] in (@Urgency)
AND I.[Opened Group:] = 'SERVICE DESK'
"** 처음 **"을 정의하십시오. RN으로'row_numer() (Part by I. [Incident #] order by Date desc)]와 같은 것을 CTE에 추가하기를 원할 것입니다. 그리고 선택의 맨 아래에있는'RN = 1'을 CTE – scsimon