导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

向各位高手求这样的Sql语句

KETTLY800730 2007-12-11 09:22:59
e_id m_id name
bg xx huihui
bg dd xiaoxiao
bg cc mingming
xc ss xixi


e_id m_id name number
bg xx huihui 1
bg dd xiaoxiao 2
bg cc mingming 3
xc ss xixi 1
向各位高手求这样的Sql语句
...全文
71 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
-狙击手- 2007-12-11
--如果m_id是唯 一的,还可以这样
create table T(e_id nvarchar(2) ,             m_id  nvarchar(2) ,         name nvarchar(10))
insert T select 'bg', 'xx', 'huihui'
insert T select 'bg', 'dd', 'xiaoxiao'
insert T select 'bg', 'cc', 'mingming'
insert T select 'xc', 'ss', 'xixi'
go

---
select * ,[number] = (select count(1)+ 1 from T where e_id = tt.e_id and m_id > tt.m_id)
from T tt

drop table t

/*

e_id m_id name number
---- ---- ---------- -----------
bg xx huihui 1
bg dd xiaoxiao 2
bg cc mingming 3
xc ss xixi 1

(所影响的行数为 4 行)

*/
回复
中国风 2007-12-11
create table T(e_id nvarchar(2) ,             m_id  nvarchar(2) ,         name nvarchar(10))
insert T select 'bg', 'xx', 'huihui'
insert T select 'bg', 'dd', 'xiaoxiao'
insert T select 'bg', 'cc', 'mingming'
insert T select 'xc', 'ss', 'xixi'
go

select *,number=0 into # from T order by e_ID
go
declare @e_id nvarchar(2),@i int
update #
set @i=case when e_id=@e_id then @i+1 else 1 end ,number=@i,@e_id=e_id
go
select * from #

e_id m_id name number
---- ---- ---------- -----------
bg xx huihui 1
bg dd xiaoxiao 2
bg cc mingming 3
xc ss xixi 1

(所影响的行数为 4 行)


回复
areswang 2007-12-11
LZ要什么语句?
回复
中国风 2007-12-11
2005;
select *,number=row_number()over(partition by e_id order by e_id) from T
回复
中国风 2007-12-11
生成临时表:
select *,number=0 into # from T order by e_ID
go
declare @e_id nvarchar(2),@i int
update #
set @i=case when e_id=@e_id then @i+1 else 1 end ,number=@i,@e_id=e_id
go
select * from #
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告