如何使用T-SQL对增量值1到4的有序集(按日期时间值排序)进行编号?我希望结果如下所示。提前谢谢。
1/1/2011 1
1/2/2011 2
1/3/2011 3
1/4/2011 4
1/5/2011 1
1/6/2011 2
1/7/2011 3
1/8/2011 4
1/9/2011 1
1/10/2011 2
1/11/2011 3
1/12/2011 4
1/13/2011 1
1/14/2011 2
1/15/2011 3
1/16/2011 4
1/17/2011 1
1/18/2011 2
1/19/2011 3
1/20/2011 4
答案 0 :(得分:3)
这是一种方式:
SELECT MyDate, ((row_number() over (order by MyDate) - 1) % 4) + 1
FROM MyTable
答案 1 :(得分:1)
我假设你已经在SomeTable.dt
中设置了一组日期:
SELECT dt, (ROW_NUMBER() OVER (ORDER BY dt) - 1) % 4 + 1 AS col2
FROM SomeTable
ORDER BY dt
答案 2 :(得分:0)
试试这个:
SELECT date, ((ROW_NUMBER() OVER (ORDER BY date) - 1) % 4) + 1
FROM table
答案 3 :(得分:0)
这是没有row_number的另一个选项(也适用于SQL2k):
SELECT
D.DateValue,
(DATEPART(DD, D.DateValue) - 1) % 4 + 1 AS Col1,
DATEDIFF(DD, '20110101', D.DateValue) % 4 + 1 AS Col2
FROM D
此处Col1将在每个新月开始计算,而Col2将在所有月份编号记录。即,如果您选择了一个月以上,您将在月份的边界检索:
DateValue Col1 Col2
2011-01-29 1 1
2011-01-30 2 2
2011-01-31 3 3
2011-02-01 1 4
2011-02-02 2 1