首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于根据类别向记录添加数字的SQL代码

用于根据类别向记录添加数字的SQL代码
EN

Stack Overflow用户
提问于 2012-05-16 11:24:28
回答 1查看 110关注 0票数 0

我有下表:

代码语言:javascript
运行
复制
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。

代码语言:javascript
运行
复制
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

提前感谢您的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-16 11:33:41

使用ROW_NUMBER()OVER。此示例使用表变量:

代码语言:javascript
运行
复制
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

结果:

代码语言:javascript
运行
复制
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                                 1
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10611597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档