一个或许有点怪的需求,

xxmiaoyong126com 2010-07-24 11:32:23
这个需求是这样的,
if object_id('[tb]') is not null drop table [tb]
go
create table tb(姓名 varchar(10) , 课程 varchar(10))
insert into tb values('张三' , '语文' )
insert into tb values('张三' , '数学' )
insert into tb values('张三' , '数学')
insert into tb values('李四' , '语文' )
insert into tb values('李四' , '语文')
insert into tb values('李四' , '语文' )
go
需要的结果是这样的,我把他表述成重复行的计数
姓名 课程 计数
张三 语文 01
张三 数学 01
张三 数学 02
李四 语文 01
李四 语文 02
李四 语文 03



...全文
78 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bancxc 2010-07-24
  • 打赏
  • 举报
回复
xxmiaoyong126com 2010-07-24
  • 打赏
  • 举报
回复
好的,多谢各位,
GOOGLE搜了半天,没找到想要的,
百年树人 2010-07-24
  • 打赏
  • 举报
回复
select *,
计数=right('00'+ltrim(row_number() over(partition by 姓名,课程 order by getdate())),2)
from tb

/**
姓名 课程 计数
---------- ---------- ----
李四 语文 01
李四 语文 02
李四 语文 03
张三 数学 01
张三 数学 02
张三 语文 01

(6 行受影响)
**/
东那个升 2010-07-24
  • 打赏
  • 举报
回复

select *,计数=right(ltrim(100+row_number() over(partition by 姓名,课程 order by getdate())),2) from tb
order by 姓名 desc,课程 desc

姓名 课程 计数
---------- ---------- ----
张三 语文 01
张三 数学 01
张三 数学 02
李四 语文 01
李四 语文 02
李四 语文 03

(6 行受影响)
东那个升 2010-07-24
  • 打赏
  • 举报
回复
select *,计数=row_number() over(partition by 姓名,课程 order by getdate()) from tb


姓名 课程 计数
---------- ---------- --------------------
李四 语文 1
李四 语文 2
李四 语文 3
张三 数学 1
张三 数学 2
张三 语文 1

(6 行受影响)

34,874

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧