SSRSを使用したチケットシステムでレポートを作成しようとしています。私は "インシデントボディ"テーブルと "インシデントディテール"テーブルの両方からフィールドを導入しています。私が探しているのは、チケットがSLAを通過して顧客に返答したかどうかです。SSRS SQLクエリの結果を制限する
私はSLA過去のチケットをチェックしています二つの方法:
1)チケットがSLA日を過ぎていると、所定の種類
2)チケットが所定の一致詳細レコードを持っているに一致する詳細レコードがありませんタイプはSLAの日付の後でした
私は以下のCTEセクションを作成することができましたが、その結果を最も古い一致する行/レコードに減らす方法には苦労しています。チケットはレポートに1回だけ表示されます。例えば
:
ジョニーのブログは2016年1月1日にCONTACTED_TMのRECORDTYPEを使用してチケットを更新します。 SLAは2015年12月31日でした。翌日(2020年1月2日)には、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