| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 
 | WITH 
	SR (E_LOCATION_CODE, E_ACCT_NUM, TdProdDate, E_SERVICE_TYPE, RN) AS 
	(
		SELECT E_LOCATION_CODE,
			   E_ACCT_NUM,
			   TdProdDate,
			   E_SERVICE_TYPE,
			   row_number() over(partition BY E_ACCT_NUM, E_LOCATION_CODE ORDER BY TdProdDate ASC)
 
		FROM dbo.TEST as a
 
		WHERE a.TdProdDate BETWEEN '20101201' AND '20101231'
			  AND a.E_LOCATION_CODE = '512111'
			  AND a.E_SERVICE_TYPE <= 32 
			  AND a.E_SERVICE_TYPE >= 30
 
	)
 
	, SR2  (a.E_LOCATION_CODE, a.E_ACCT_NUM, a.TdProdDate, a.E_SERVICE_TYPE, b.TdProdDate, b.E_SERVICE_TYPE, RN2) AS
 
	(
		SELECT 
					a.E_LOCATION_CODE
					, a.E_ACCT_NUM
					, a.TdProdDate
					, a.E_SERVICE_TYPE
					, b.TdProdDate
					, b.E_SERVICE_TYPE
					, row_number() over(partition BY a.E_ACCT_NUM, a.E_LOCATION_CODE ORDER BY b.TdProdDate ASC)
 
		FROM	SR as a
					LEFT JOIN dbo.TEST as b
						ON a.E_ACCT_NUM = b.E_ACCT_NUM
						AND b.E_SERVICE_TYPE >= 20
						AND b.E_SERVICE_TYPE <= 22
						AND b.TdProdDate <= a.TdProdDate
						AND b.TdProdDate >= a.TdProdDate - 11		
	)
 
--------------------------------------------------------------------------------------------------------
SELECT 
			a.E_LOCATION_CODE
			, a.E_ACCT_NUM
			, a.TdProdDate
			, a.E_SERVICE_TYPE
			, b.TdProdDate
			, b.E_SERVICE_TYPE
 
FROM	SR2
 
WHERE RN2 = 1 | 
Partager