我有以下幾點:消除行
Index dateOfInquiry
649454 2016-02-05
649455 2016-02-05
而且我有此查詢:
SELECT COUNT(a.dateOfInquiry) as NumberRecords
FROM
(
SELECT ROW_NUMBER() OVER(ORDER BY dateOfInquiry ASC)
Id, dateOfInquiry
FROM
Table
) a
INNER JOIN
(
SELECT ROW_NUMBER() OVER(ORDER BY dateOfInquiry ASC)
Id, dateOfInquiry
FROM
Table
)
b
ON b.ID = a.ID + 1
WHERE ABS(DATEDIFF(d, a.dateOfInquiry, b.dateOfInquiry)) > 14
GROUP BY a.strTransactionID
我試圖做的僅僅是每7天退貨1項紀錄他們存在的時期。所以我想要1在上面的數據集中,但我得到0(它消除了兩個記錄,因爲它們之間沒有14天)
而且,如果有更多記錄並且行爲不是'很正確。如果我在1日,2日,3日等到15日有記錄,我仍然只需要1條記錄,然後在16日或以後的下一條記錄再次開始計數,忽略其他記錄,直到差異爲止超過14天。
基本上我想把一個記錄計爲1,然後忽略所有進一步的記錄,直到14天結束。
我想另一個樣品,結果是2:
Index dateOfInquiry
649454 2016-02-01 <- count
649455 2016-02-12 -ignore (<l4 past 649454)
649456 2016-02-12 -ignore (<l4 past 649454)
649457 2016-02-17 <- count
649458 2016-02-22 -ignore (<l4 past 649457)
649459 2016-02-25 -ignore (<l4 past 649457)
謝謝,我今天早上要試試這個。如果我想從中看出來,我可以將「With」表作爲視圖,並用視圖替換cte的實例,對吧? –
@PatrickSchomburg是的,只要將'with'移到'r_cte之前('。像這樣:http://rextester.com/PLNO30199 – SqlZim