0

日付の列があります。いずれも平日です。「n」日離れた日付のリストを生成したいと思います。たとえば、最新の日付から n 日前、2n 日前、3n 日前などの日付を見つけたいとします。while ループを使用することもできますが、SQL セットを使用できるかどうかを知りたかったのです。代わりに操作します。それはできますか?

4

4 に答える 4

1

これは CTE の完璧なケースです。

DECLARE @LastDate datetime;
DECLARE @N int;    
DECLARE @NCoefficientMax;

SELECT @N = 1, @NCoefficientMax = 10;

SELECT @LastDate = MyDate
FROM MyTable
ORDER BY MyDate DESC

WITH mycte
AS
(
SELECT DATEADD(dd, @N, @LastDate) AS NextDate, @N AS NCoefficient
UNION ALL
SELECT DATEADD(dd, @N, NextDate), @N + NCoefficient AS NCoefficient
FROM mycte WHERE NCoefficient < @NCoefficientMax 
)

SELECT NextDate FROM mycte

@NCoefficientMaxはNの最大係数です。

于 2013-08-29T14:56:07.873 に答える