sql ,将表中‘姓名’字段数据相同的添加1.2.3.....
SQL2000,有一个表,全部人员名单,需要把姓名相同的人依次加上1,2,3,4.。。。例如:表中有数据张三李四张三王五需要把‘姓名’这一列改成张三1李四张三2王五麻烦了...
SQL2000,有一个表,全部人员名单,需要把姓名相同的人依次加上1,2,3,4.。。。
例如:表中有数据
张三
李四
张三
王五
需要把‘姓名’这一列改成
张三1
李四
张三2
王五
麻烦了,急需用,成功解决必加分,感谢
★★★★★需要修改表中的数据★★★★★
我的表结构:序号(唯一的),单位,姓名,性别,生日...... 展开
例如:表中有数据
张三
李四
张三
王五
需要把‘姓名’这一列改成
张三1
李四
张三2
王五
麻烦了,急需用,成功解决必加分,感谢
★★★★★需要修改表中的数据★★★★★
我的表结构:序号(唯一的),单位,姓名,性别,生日...... 展开
5个回答
展开全部
你的序号列应该是以此递增的吧.
思路: 查姓名与当前行姓名相同的记录数. 如果是1,表示当前是第一个此行名,不用处理,如果是大于1,就加上比当前序号小的姓名相同的总个数就是你要的结果.
update 表名
set 姓名=
姓名+case when (select count(*) from 表名 a1 where a1.姓名=表名.姓名)>1 then cast((select count(*) from 表名 a1 where a1.姓名=表名.姓名 and a1.序号<=表名.序号) as varchar(10)) else '' end
思路: 查姓名与当前行姓名相同的记录数. 如果是1,表示当前是第一个此行名,不用处理,如果是大于1,就加上比当前序号小的姓名相同的总个数就是你要的结果.
update 表名
set 姓名=
姓名+case when (select count(*) from 表名 a1 where a1.姓名=表名.姓名)>1 then cast((select count(*) from 表名 a1 where a1.姓名=表名.姓名 and a1.序号<=表名.序号) as varchar(10)) else '' end
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
UPDATE a SET a.name = a.name + CAST((SELECT COUNT(*) FROM tb b WHERE b.id < a.id AND b.name = a.name) AS VARCHAR)
FROM tb a, (SELECT NAME FROM tb GROUP BY NAME HAVING COUNT(*) > 1) b WHERE a.name = b.name
FROM tb a, (SELECT NAME FROM tb GROUP BY NAME HAVING COUNT(*) > 1) b WHERE a.name = b.name
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
UPDATE tab t1
SET 姓名 = TRIM(姓名) + (SELECT COUNT(序号)+1 FROM tab WHERE 姓名 = t1.姓名 AND 序号 <= t1.序号)
WHERE 姓名 IN (SELECT 姓名 FROM tab GROUP BY 姓名 HAVING COUNT(序号) > 1)
即可
SET 姓名 = TRIM(姓名) + (SELECT COUNT(序号)+1 FROM tab WHERE 姓名 = t1.姓名 AND 序号 <= t1.序号)
WHERE 姓名 IN (SELECT 姓名 FROM tab GROUP BY 姓名 HAVING COUNT(序号) > 1)
即可
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
declare @count int;
declare @name nvarchar(20);
declare @irow int;
declare cur cursor
for
select 姓名,count(*)from [表名] group by 姓名 having count(*)>1
open cur
fetch next from cur into @name,@count
while(@@fetch_status=0)
begin
set @irow=@count;
print @name;
print @count;
update [表名] set 姓名=姓名+convert(nvarchar,@count-@irow),@irow=@irow-1 where 姓名=@name
fetch next from cur into @name,@count
end
close cur
deallocate cur
declare @name nvarchar(20);
declare @irow int;
declare cur cursor
for
select 姓名,count(*)from [表名] group by 姓名 having count(*)>1
open cur
fetch next from cur into @name,@count
while(@@fetch_status=0)
begin
set @irow=@count;
print @name;
print @count;
update [表名] set 姓名=姓名+convert(nvarchar,@count-@irow),@irow=@irow-1 where 姓名=@name
fetch next from cur into @name,@count
end
close cur
deallocate cur
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以。在表1的e1输入“学费”,e2输入公式:=vlookup(a2,表2!$a$2:$b$100,2,false)
这里假设表2的名字就叫“表2”,且表2的数据在a、b列,第2~100行,可以实按际情况修改公式中的表名和数据范围。
这里假设表2的名字就叫“表2”,且表2的数据在a、b列,第2~100行,可以实按际情况修改公式中的表名和数据范围。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询