我有一列日期。他們都是工作日。我想生成一個相距「n」天的日期列表。例如,從最近的日期開始,我想在它之前的n天,它之前的2天前,它之前的3天等等找到日期。我可以使用while循環,但是我想知道是否可以使用SQL集操作。可以做到嗎?T-SQL從日期列中選擇每第n個日期
0
A
回答
0
您可以使用dateadd函數 並使用連接到自身表進行選擇。
什麼,你需要做的是 - 結果插入到臨時表, 與其他列則包含row_number然後命令一樣的結果
簡單的例子:
declare @t1 table (d datetime, row int)
insert @t1
select d, row_number()over(order by d)
from T1
order by d
select T1A.*, datediff(day,T1A.d,T1B.d) as dif
from @t1 as T1A
left join @t1 as T1B on T1A.row = T1B.row-1
0
DECLARE @mostRecent datetime2
SELECT @mostRecent = MAX(dateColumn)
FROM table
SELECT columns
FROM table
WHERE (DATEDIFF(day, dateColumn, @mostRecent) % n) = 0
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的最大系數。
相關問題
- 1. 日期選擇器Jquery選擇第一個日期後的第二個日期
- 2. 從日期欄選擇日期列
- 3. 從日期集合中選擇每個月的最後日期
- 4. jQuery日期選擇器 - 從第一個日期選擇器中選擇後禁用日期
- 5. 定義從第一個日期選擇器開始的第二個日期選擇器的開始日期
- 6. 從「有效」日期表中獲取第n個日期
- 7. 爲每個日期選擇多列
- 8. 選擇*從表中選擇兩個日期之間的日期
- 9. 從日曆中選擇日期,然後日期內選擇
- 10. TSQL上個月的第一個日期 - 僅限日期
- 11. 按日期選擇多列,爲每列
- 12. 在jQuery UI中將第二個日期限制爲+日期日期選擇器
- 13. 無法從日期選擇器中的日期選擇器中獲取日期
- 14. 如何獲得目標c中每個月的第n個星期日日期?
- 15. TSQL - 在給定日期之間遞歸選擇日期
- 16. Linq - 從日期選擇日期時間
- 17. 日期選擇器從特定日期
- 18. TSQL選擇記錄的最後日期
- 19. 爲什麼第一個日期選取器從第二個日期選取器中選取日期值?
- 20. 使用Selenium webdriver從日期選擇器中選擇日期
- 21. 如何增加從日期選擇器中選擇的日期?
- 22. 從日期列表中選擇最大不同日期
- 23. R - 如何從日期欄中選擇最早的日期列?
- 24. C#獲取下一個第N個星期五日期從今天的日期
- 25. 從appngine中選擇日期
- 26. 從datepicker中選擇日期
- 27. 如何選擇第一列日期和第二列時間爲日期時間
- 28. 在jQuery日期選擇器中選擇日期和高亮日期選擇器
- 29. 基於第一個日期選擇器的禁用日期
- 30. 如何選擇每個日期的日期範圍
您想如何使用它?目前還不清楚你實際想要做什麼。 –
你能提供樣本數據嗎?如果你的日期都是工作日,而且n = 5,那麼你很快就沒有日期在你的表中。 –