連続する 20 日間でイベント数が 10 を超えた場合、どのように見つけるのが最善の方法でしょうか。
例外レポートを作成しようとしていますが、ループを使用する以外のロジックを理解できません。
テーブルのスキーマを含めました。
ID |StartDate |EndDate |Area
---------+---------+---------+---------
12 |01-02-2013 |05-02-2013 |A12
14 |06-02-2013 |12-02-2013 |A13
15 |11-02-2013 |19-02-2013 |A14
19 |16-02-2013 |26-02-2013 |A15
21 |21-02-2013 |05-03-2013 |A16
24 |01-02-2013 |05-02-2013 |A17
26 |06-02-2013 |12-02-2013 |A18
28 |11-02-2013 |19-02-2013 |A19
30 |16-02-2013 |26-02-2013 |A20
33 |21-02-2013 |05-03-2013 |A21
私は部分的な解決策を持っています: '
'DECLARE @START AS DATE
DECLARE @END AS DATE
SET @START= '20130201'
SET @END= '20130204'
SELECT n.EVENT_DATE,
(SELECT SUM(SESSIONS) AS Total_Sessionsn
FROM dbo.[Session]
WHERE (EVENT_DATE BETWEEN DATEADD(d,-20,n.EVENT_DATE) AND n.EVENT_DATE)
GROUP BY AREA_CODE, SITE_CODE) AS Sessions
FROM [dbo].[Session] AS n
WHERE EVENT_DATE BETWEEN @START
AND DATEADD(d,20+dbo.HolidayCount(@END,DATEADD(d,20,@END)) ,@END )'
とった。今から 20 営業日後の日付を知りたい人のために、以下に解決策を追加しました。:) (私はばかだと思います!)
/****** Script for SelectTopNRows command from SSMS ******/
SELECT TOP 1 [SK_CAL]
,[CAL_DATE]
,[CAL_CODE]
,[CAL_VALUE]
,[CAL_OPEN]
,[CAL_CLOSE]
FROM
(SELECT TOP 20 [SK_CAL]
,[CAL_DATE]
,[CAL_CODE]
,[CAL_VALUE]
,[CAL_OPEN]
,[CAL_CLOSE]
FROM [tempdb].[dbo].[tbCalendar]
WHERE (CAL_DATE>'20130201' AND CAL_VALUE=1)
ORDER BY SK_CAL ASC) n
ORDER BY SK_CAL DESC