我有一個包含過去四年(2018 年 - 2021 年)所有日期的表格,我想要一個基于過去十二個月按時間順序排列的列。這是該表目前的樣子:
| 日期 | 年 | 月 | MONTH_NAME |
|---|---|---|---|
| 2021-10-03 | 2021年 | 10 | 十月 |
| 2021-10-02 | 2021年 | 10 | 十月 |
| 2021-10-01 | 2021年 | 10 | 十月 |
| 2021-09-30 | 2021年 | 9 | 九月 |
現在我想添加另一列,根據過去 12 個月對所有記錄進行排序。今天是 2021 年 10 月,所以最后十二個月將是 2020 年 10 月 - 2021 年 9 月,無論哪一年應該是每個月的正確順序:
| 月 | 命令 |
|---|---|
| 十月 | 1 |
| 十一月 | 2 |
| 十二月 | 3 |
| 一月 | 4 |
| 二月 | 5 |
| 行進 | 6 |
| 四月 | 7 |
| 可能 | 8 |
| 六月 | 9 |
| 七月 | 10 |
| 八月 | 11 |
| 九月 | 12 |
uj5u.com熱心網友回復:
為了按照您的要求映射月份,您需要使用 [ORDER] = ((DATEPART(MONTH, DATE) 2) % 12) 1
例如,
DECLARE @Factor INT = 12 - DATEPART(MONTH, GETDATE())
;With MyCTE AS (
SELECT TOP 200 D = DATEADD(MONTH,ROW_NUMBER() OVER (ORDER BY (select null)), '2000-09-01')
FROM sys.all_objects
)
-- I am using the above CTE only to create some data for the sample.
-- It represent the data from your table
-- If you can provide DDLD DML then we can present it with your sample data
--> here we do the map betwen the date and the requested ORDER column
SELECT D, DATEPART(MONTH, D), [ORDER] = ((DATEPART(MONTH, D) @Factor) % 12) 1
FROM MyCTE
GO

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/311529.html
標籤:sql sql-server 查询语句
