が特定の日付/特定の日付に最も近い日付にあるstatus
かどうかを調べようとしています。ID
Active/Backup
私のCTEのデータ:
ID StatusDate Status Order
2145 2012-04-29 n/a 1
2145 2012-08-02 Backup 2
2145 2012-09-27 Backup 3
2145 2012-11-07 Backup 4
2145 2012-11-09 Active 5
2145 2012-11-12 Backup 6
2145 2012-12-13 Pending 7
2145 2012-12-18 Sold 8
2146 2012-10-15 Pending 1
2146 2012-10-15 n/a 2
2146 2012-12-19 Sold 3
4145 2012-04-24 Active 1
4145 2012-04-24 Active 2
4145 2012-05-22 Pending 3
4145 2012-09-13 Active 4
4145 2012-09-13 Active 5
4145 2012-12-05 Pending 6
4145 2012-12-19 Sold 7
7175 2012-11-08 n/a 1
7175 2012-12-01 Backup 2
7175 2012-12-05 Active 3
7175 2012-12-06 Pending 4
7175 2012-12-19 Sold 5
結果 :
Analysis 09/20/2012 12/19/2012 3/20/2013
Total Active 2 0 0
結果のヘッダーは、現在の日付から 6 か月前の日付、現在の日付から 3 か月前の日付、および現在の日付です。**
これが私が苦労しているクエリです:
;WITH x AS
(
SELECT ID,statusdate,status , row_number() over (partition by ID order by statusdate DESC ) as RN1
FROM
(SELECT ID,statusdate,status,
rn = row_number() over (partition by ID order by statusdate )
FROM tblHistory (nolock)
WHERE [statusdate] <= '20120920' AND
ID in ('2145','2146','4145''7175')
) AS A
)
SELECT ID,statusdate,status
FROM x
WHERE rn1 = 1 AND status IN ('Backup','Active')