2016-10-07 10 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

は、あなたがデータとサンプルdbテーブル構造を提供することができますか? – rbr94

+0

テーブルにはDateという列が1つだけあります。それは '@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 
関連する問題