2016-10-07 101 views
0

我有一個日期表,它包含每天作爲@startDate和@endDate之間的單獨行。Azure SQL Server - 基於變量月從表中刪除日期

我需要刪除與@dayOfMonth相匹配的所有日期,比如第16個例子。

但我不需要保留每一行包含本月16日。我必須考慮另一個變量@everyNMonths。所以,如果@everyNMonths設置爲2,和我@startDate是「2016年10月13日」和@EndDate是「2017年3月20日」我會想保留:

2016-10-16 

2016-12-16 

2017-02-16 

不知道怎麼可以做到這一點。謝謝你的幫助。

+0

您提供數據的樣本數據庫表結構? – rbr94

+0

該表只有一列,日期。它在'@startDate'和'@endDate'之間每天都有一個獨立的行 – Dough

回答

0

這應該工作:

DECLARE @StartTime DATE = '2015-11-01' 
DECLARE @EndTime DATE = '2016-10-01' 
DECLARE @Interval INT = 1 
DECLARE @dayOfMonth INT = 16 

--CREATE Table #TempTimes 

SELECT StartTime 
FROM 
(
    SELECT StartTime,ROW_NUMBER() OVER (ORDER BY StartTime) As Num 
    FROM 
    (
     SELECT DISTINCT StartTime 
     FROM #TempTimes 
     WHERE DATEPART(DD,StartTime) = @dayOfMonth 
     AND StartTime BETWEEN @StartTime AND @EndTime 
    )t 
)s 
WHERE (Num - 1)%@Interval = 0 
能否