我有下表:
UserID Sub EID
1 TA 1
1 TA 6
1 TA 2
2 TA 7
2 GB 7
3 TA 6
3 TA 1
3 GB 7
3 MX 7
3 MX 6我正在尝试运行一条sql语句,该语句将在每次有重复的特定userid时添加一个从1开始的数字来转换"Sub“字段。下面是我应用该语句后的表格。我不知道如何才能做到这一点。我使用的是SQL Server 2008。
UserID Sub EID
1 TA1 1
1 TA2 6
1 TA3 2
2 TA1 7
2 GB1 7
3 TA1 6
3 TA2 1
3 GB1 7
3 MX1 7
3 MX2 6提前感谢您的帮助。
发布于 2012-05-16 11:33:41
使用ROW_NUMBER()OVER。此示例使用表变量:
DECLARE @t TABLE(UserID INT, Sub VARCHAR(5), EID INT);
INSERT INTO @t VALUES
(1,'TA',1)
, (1,'TA',6)
, (1,'TA',2)
, (2,'TA',7)
, (2,'GB',7)
, (3,'TA',6)
, (3,'TA',1)
, (3,'GB',7)
, (3,'MX',7)
, (3,'MX',6);
SELECT UserID
, Sub=Sub+CAST(ROW_NUMBER()OVER(PARTITION BY UserID, Sub ORDER BY UserID) AS VARCHAR(30))
, EID
FROM @t结果:
UserID Sub EID
----------- ----------------------------------- -----------
1 TA1 1
1 TA2 6
1 TA3 2
2 GB1 7
2 TA1 7
3 GB1 7
3 MX1 7
3 MX2 6
3 TA1 6
3 TA2 1https://stackoverflow.com/questions/10611597
复制相似问题