邹健,如何创建这个序号呢?

DataBind 2004-12-28 10:40:25
create table tb1
(
AreaName nvarchar(10),
ProvinceName nvarchar(10),
UserName nvarchar(10)
)
如何给以下分组中创建一个序号呢?标志着个UserName是这ProvinceName组中的第几个。

identity能完成这个工作吗?
select AreaName,ProvinceName,UserName from tb1
group by AreaName,ProvinceName
...全文
165 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuhongying8848 2004-12-28
  • 打赏
  • 举报
回复
mark
淡蓝冰 2004-12-28
  • 打赏
  • 举报
回复
select AreaName,ProvinceName,UserName from tb1
group by AreaName,ProvinceName --这个语句本身就不对啊,UserName 即不在聚合函数中,也不在group by 中
用IDENTITY函數可以解決你的問題。
這也是我思考很久后才找到的一個函數喲。因為我也遇到過類似的問題。我是想要一個表中的當前記錄號﹐跟你差不多。用它就解決了
zjcxc 元老 2004-12-28
  • 打赏
  • 举报
回复
如果 AreaName+ProvinceName+UserName 不重复,则可以直接用 lsxaa(小李铅笔刀) 的,注意那个生成的序号是按 UserName 顺序的
zjcxc 元老 2004-12-28
  • 打赏
  • 举报
回复
--不知道你的表中那些可以做主键? 如果没有可以做主键的,则用临时表

--处理示例
select AreaName,ProvinceName,UserName,序号=0
into #t from tb1
order by AreaName,ProvinceName

declare @ProvinceName nvarchar(10),@i int
update #t set @i=case when @ProvinceName=ProvinceName then @i+1 else 1 end
,序号=@i,@ProvinceName=ProvinceName
select * from #t
drop table #t
lsxaa 2004-12-28
  • 打赏
  • 举报
回复
如果每组中姓名唯一,可以这样

select 序号=(select count(*)
from tb1
where AreaName=a.AreaName
and ProvinceName=a.ProvinceName
and UserName<=a.UserName),*
from tbl a
zjcxc 元老 2004-12-28
  • 打赏
  • 举报
回复
select AreaName,ProvinceName,UserName from tb1
group by AreaName,ProvinceName --这个语句本身就不对啊,UserName 即不在聚合函数中,也不在group by 中
子陌红尘 2004-12-28
  • 打赏
  • 举报
回复
更正一个错误:

insert into #t(AreaName,ProvinceName,UserName)
select AreaName,ProvinceName,UserName from tb1 group by AreaName,ProvinceName
子陌红尘 2004-12-28
  • 打赏
  • 举报
回复
可以:

create table #t(
id int identity(1,1),
AreaName nvarchar(10),
ProvinceName nvarchar(10),
UserName nvarchar(10)
)

insert into #t select AreaName,ProvinceName,UserName from tb1
group by AreaName,ProvinceName

select
(a.id-b.id +1) as NewID,
a.AreaName,
a.ProvinceName,
a.UserName
from
#t a,
(select AreaName,ProvinceName,min(id) as id from #t group by AreaName,ProvinceName) b
where
a.AreaName = b.AreaName and a.ProvinceName = b.ProvinceName
Order By
a.AreaName,
a.ProvinceName

34,594

社区成员

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

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