原数据
编号 序号
1001 2
1001 3
1001 4
1001 5
1001 9
1003 3
1003 5
1003 8
1006 2
1006 3
1006 4
1006 5
1006 6
1008 3
1008 4
1008 5
1008 6
变成
编号 序号
1001 1
1001 3
1001 4
1001 5
1001 9
1003 1
1003 5
1003 8
1006 1
1006 3
1006 4
1006 5
1006 6
1008 1
1008 4
1008 5
1008 6或者变成
编号 序号
1001 1
1001 2
1001 3
1001 4
1001 5
1003 1
1003 2
1003 3
1006 1
1006 2
1006 3
1006 4
1006 5
1008 1
1008 2
1008 3
1008 4
如何编程实现,请大家帮帮忙!谢谢大家了!
编号 序号
1001 2
1001 3
1001 4
1001 5
1001 9
1003 3
1003 5
1003 8
1006 2
1006 3
1006 4
1006 5
1006 6
1008 3
1008 4
1008 5
1008 6
变成
编号 序号
1001 1
1001 3
1001 4
1001 5
1001 9
1003 1
1003 5
1003 8
1006 1
1006 3
1006 4
1006 5
1006 6
1008 1
1008 4
1008 5
1008 6或者变成
编号 序号
1001 1
1001 2
1001 3
1001 4
1001 5
1003 1
1003 2
1003 3
1006 1
1006 2
1006 3
1006 4
1006 5
1008 1
1008 2
1008 3
1008 4
如何编程实现,请大家帮帮忙!谢谢大家了!
解决方案 »
- 時間對比如何排除星期六?
- SQL SERVER 删除记录后自动排序如何
- access 转换sql asp页面数据库连接时报Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
- DATEDIFF时间格式换种写法
- sql2005如何计算一个库里各个表的记录总数
- 存取过程分页的问题
- 请大家帮帮忙!关于字符串查询的问题!
- 求sql语句
- 请问下现有多个结构相同的sqlserver数据库数据怎么合并?
- 数据合并问题?
- 初学者提问
- 为什么update tab set f1=f2,f2=''和update tab set f2='',f1=f2结果一样?
use tempdb;
/*
create table tb
(
编号 int not null,
序号 int not null
);
insert into tb(编号,序号)
values
(1001,2),
(1001,3),
(1001,4),
(1001,5),
(1001,9),
(1003,3),
(1003,5),
(1003,8),
(1006,2),
(1006,3),
(1006,4),
(1006,5),
(1006,6),
(1008,3),
(1008,4),
(1008,5),
(1008,6);
*/
select
t.编号,
(case when t.sort = 1 then 1 else t.序号 end) as [序号]
from
(
select tb.编号,tb.序号,
ROW_NUMBER() over(partition by tb.编号 order by tb.编号) as [sort]
from tb
) as t;
use tempdb;
/*
create table tb
(
编号 int not null,
序号 int not null
);
insert into tb(编号,序号)
values
(1001,2),
(1001,3),
(1001,4),
(1001,5),
(1001,9),
(1003,3),
(1003,5),
(1003,8),
(1006,2),
(1006,3),
(1006,4),
(1006,5),
(1006,6),
(1008,3),
(1008,4),
(1008,5),
(1008,6);
*/
select tb.编号,
ROW_NUMBER() over(partition by tb.编号 order by tb.编号) as [序号]
from tb;
a
set
序号=b.序号
from
tb a,
(select 编号,row_number()over(partition by 编号 order by 编号) as 序号 from tb)b
where
a.编号=b.编号
create table test
(num int,
rank int)
go
insert into test
values
(1001, 2),
(1001, 3),
(1001, 4),
(1001, 5),
(1001, 9),
(1003, 3),
(1003, 5),
(1003, 8),
(1006, 2),
(1006, 3),
(1006, 4),
(1006, 5),
(1006, 6),
(1008, 3),
(1008, 4),
(1008, 5),
(1008, 6)--第一种情况
select num,
(case
when t.rank = (select min(a.rank) from test a where a.num = t.num) then 1
else t.rank
end)
from test t--第二种情况
select num,
rank() over (partition by num order by rank) as 'Rank'
from test