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