2011-10-10 85 views
4

如何使用T-SQL爲增量值1至4編號有序集(按日期時間值排序)?我希望結果如下所示。提前致謝。TSQL對訂購集編號

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

Off this topic to this question but [your question here](http://dba.stackexchange.com/questions/6724/drop-duplicateredundant-unique-constraint-from-filestream-table/9723#9723)被遷移並回答。 [dba.se] –

回答

2

這裏有一種方法:

SELECT MyDate, ((row_number() over (order by MyDate) - 1) % 4) + 1 
FROM MyTable 
+0

/我搖着他的拳頭,稍微快點打字員,然後打+1; –

+0

哈,非常酷。 +1。 – jadarnel27

+0

@moot大聲笑59秒! :) –

1

我假設你有一組日期已經SomeTable.dt

SELECT dt, (ROW_NUMBER() OVER (ORDER BY dt) - 1) % 4 + 1 AS col2 
FROM SomeTable 
ORDER BY dt 
0

試試這個:

SELECT date, ((ROW_NUMBER() OVER (ORDER BY date) - 1) % 4) + 1 
FROM table 
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