日期:2014-05-18  浏览次数:20541 次

怎样将a字段值相同的b字段按从1开始的顺序递增?
比如1张表:
a b
-----------
str1 1
str1 1
str1 1
str2 1
str2 1
str2 1
str2 1
str2 1
str3 1
str3 1
我想变为

a b
-----------
str1 1
str1 2
str1 3
str2 1
str2 2
str2 3
str2 4
str2 5
str3 1
str3 2

请教用sql语句怎样能实现?



------解决方案--------------------
SQL code
SET NOCOUNT ON
DECLARE @T TABLE (a VARCHAR(10),b INT)
----------- 
INSERT @T SELECT 'str1'  ,1 
INSERT @T SELECT 'str1'  ,1 
INSERT @T SELECT 'str1'  ,1 
INSERT @T SELECT 'str2'  ,1 
INSERT @T SELECT 'str2'  ,1 
INSERT @T SELECT 'str2'  ,1 
INSERT @T SELECT 'str2'  ,1 
INSERT @T SELECT 'str2'  ,1 
INSERT @T SELECT 'str3' , 1 
INSERT @T SELECT 'str3',  1
SELECT A,B=ROW_NUMBER() OVER(PARTITION BY A ORDER BY GETDATE()) FROM @T
/**A          B
---------- --------------------
str1       1
str1       2
str1       3
str2       1
str2       2
str2       3
str2       4
str2       5
str3       1
str3       2
/

------解决方案--------------------
SQL code
select a,b=row_number() over(partition by a order by a)
from tb