2013-08-25 46 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: - 希望这可以帮助你作为提示! :) –