2013-08-25 105 views
2

我有列日期日期按升序排序,並有許多重複日期。在第一列中,當日期發生變化時,我的索引應該增加1。如何跟蹤一列中的更改?

現在它看起來像這樣

index  date 
--------------------- 
1  2001-03-01 
1  2001-03-01 
1  2001-03-01 
1  2001-04-01 
1  2001-04-01 
1  2001-04-01 
1  2001-05-01 

應該是這樣的

index date 
----------------- 
1  2001-03-01 
1  2001-03-01 
1  2001-03-01 
2  2001-04-01 
2  2001-04-01 
2  2001-04-01 
3  2001-05-01 

感謝您的幫助

+0

看起來你不是在尋求幫助,而是要求我們代表你做。 – Rahul

+0

我至少要求提示 – niydiyin

回答

1

爲了得到想要的結果,可以使用dense_rank()分析函數。下面是一個例子:

select dense_rank() over(order by date1) as index1 
    , date1 
    from tab_a 

結果:

INDEX1  DATE1 
-------------------- 
1   2001-03-01 
1   2001-03-01 
1   2001-03-01 
2   2001-04-01 
2   2001-04-01 
2   2001-04-01 
3   2001-05-01 

SQLFiddle Demo

作爲附帶說明。儘量避免使用保留字如dateindex作爲列名。

+0

謝謝!正是我期待的。之前沒有聽說過這個功能。 – niydiyin

0

你Ç爲您的情況使用CHANGETABLE

返回變更跟蹤信息的table.You可以使用此 語句返回表的所有變更或變更跟蹤 信息的特定行。

+0

問題是我正在使用t-sql並且沒有觸發器 – niydiyin

+0

然後您可以使用CHANGETABLE選項。更新我的回答! –

+0

@niydiyin: - 希望這可以幫助你作爲提示! :) –