如何安装考场

本文介绍了一种使用SQL的方法来根据考室的人数自动生成考号区间,通过具体的SQL脚本实现了按考室人数分配考号的功能,并展示了如何通过自定义函数实现考号区间的合并。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有一表:
编号 考号 姓名
1 cc01 AA
1 cc02 BB
1 cc03 CC
1 cc04 DD
1 cc05 EE
...
我的目的就是根据每个考室的人数(用户输入)自动生成一个表,如按一个考室3个考生的效果如下:
考室 考号区间
1 cc01-cc03
2 cc04-cc05

--------------------

create table tb(编号 int,考号 char(4),姓名 varchar(10))
insert tb select 1 ,  'cc01' , 'AA' 
insert tb select 1 ,  'cc02' , 'BB' 
insert tb select 1 ,  'cc03' , 'CC' 
insert tb select 1 ,  'cc04' , 'DD' 
insert tb select 1 ,  'cc05' , 'EE'
go

select ceiling(cnt/3.0) row,* into t
from 
(
   select *,cnt=(select count(*) from tb where 考号<=a.考号)
   from tb a
) tt
go
create function dbo.f_str(@row int)
   returns varchar(100)
as
begin
   declare @re varchar(100)
   set @re=''
   select top 1 @re=考号 from t where row=@row order by 考号
   select top 1 @re=@re+'-'+考号 from t where row=@row order by 考号 desc
   return @re
end
go

select row [室号],dbo.f_str(row) [考号区间]
from t
group by row

drop table tb,t
drop function f_str

/*
室号                        考号区间
-------------------- --------------
1                      cc01-cc03
2                      cc04-cc05

(2 行受影响)

*/
http://topic.youkuaiyun.com/u/20080305/18/34a9f481-1dac-43bf-9bde-d21d2ba75880.html?seed=1637030877
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值