SQl Server中的唯一编号行,用于重复值

时间:2009-09-02 12:27:52

标签: sql sql-server

当UName发生变化时,是否可以重新编写此查询以重新开始编号,以便我的结果集为:

1 FerrieC 2 FerrieC 3 FerrieC 1 GrayD 1 TimneyA 2 TimneyA

  

SELECT Row_Number()OVER(ORDER BY   u.UName)as RowNumber,u.UName FROM(   选择'Ferriec'作为UName UNION ALL   选择'Ferriec'作为UName UNION ALL   选择'Ferriec'作为UName UNION ALL   SELECT'TimneyA'作为UName UNION ALL   SELECT'TimneyA'作为UName UNION ALL   选择'GrayD'作为UName)作为你

Thansk! :)

2 个答案:

答案 0 :(得分:5)

试试这个:

SELECT   Row_Number() OVER (PARTITION BY UName ORDER BY u.UName) as RowNumber 
         ,u.UName 
FROM  (  SELECT 'Ferriec' As UName UNION ALL 
         SELECT 'Ferriec' As UName UNION ALL 
         SELECT 'Ferriec' As UName UNION ALL 
         SELECT 'TimneyA' As UName UNION ALL 
         SELECT 'TimneyA' As UName UNION ALL 
         SELECT 'GrayD' As UName ) as u

答案 1 :(得分:2)

不确定

ROW_NUMBER OVER (ORDER BY u.UName) - RANK OVER (ORDER BY u.UName) + 1

http://msdn.microsoft.com/en-us/library/ms189798.aspx