顾惠忠什么级别:如何写这个SQL语句

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/05 00:53:14
有表字段如下:
单位代码 单位名称 出现次数
01 aaaa
01 aaaa
01 aaaa
02 bbbb
02 bbbb
01 aaaa
02 bbbb
要把代码第几次出现写到表中达到如下效果
单位代码 单位名称 出现次数
01 aaaa 1
01 aaaa 2
01 aaaa 3
02 bbbb 1
02 bbbb 2
01 aaaa 4
02 bbbb 3

求助各位大大这条SQL语句如何书写

不知道你的表有没有identity列或者能唯一标识该行数据的字段,如果没有的话一条语句好象不容易实现,只能利用临时表了
select identity(int,1,1) as ItemID,[单位代码],[单位名称]
into [临时表]
from [表]

select [单位代码],[单位名称],(select count(*) from [临时表] where [单位代码]=a.[单位代码] and [单位名称]=a.[单位名称] and ItemID<=a.ItemID) as [出现次数]
into [临时表2]
from [临时表] a

这时候[临时表2]里就是你要的数据形式了。如果你的表里边有能唯一标识那一行数据的字段的话,可以直接update
形式如下(假设你的表里边ItemID可以唯一标识某一行)

update 表
set [出现次数]=(select count(*) from 表 where [单位代码]=a.[单位代码] and [单位名称]=a.[单位名称] and ItemID<=a.ItemID)
from [表] a

select 单位代码, 单位名称,
row_number() over (partition by 单位名称 order by rowid ) 出现次数

from table(表)

partition by 单位名称:是按照"单位名称"进行区分
order by rowid : 是保持它原来的顺序

这个函数我记得是ORACLE特有的函数,希望对你有帮助

你需要说明你用的是什么数据库。