数据库 表数据 每一条数据排序 放到另一张表中

时间:2022-02-16 05:51:05

要查的数据----数据表名xuan5kjjgid    

数据库 表数据 每一条数据排序 放到另一张表中

创建另一个表  ---xuan3to5  (列名除了four five 两列  其他列名基本一致) -----把表xuan5kjjgid   one  two three 三列从小到大排序   放到xuan3to5表中 one two three

存储过程

 

--如果有这个表 删除
if(object_id('xuan3to5','U')is not null)
drop table xuan3to5
go
--创建一张表
create table xuan3to5
(
id
int not null,
code
nvarchar(200),
one
int,
two
int,
three
int,
dates
nvarchar(200),
qiansanshangci
nvarchar(200),
qiansanjiange
int,
)

--如果有proc_table_to_table 存储过程 删除

if(OBJECT_ID('proc_table_to_table','P')is not null)
drop proc proc_table_to_table
go
-- 创建proc_table_to_table存储过程
create proc proc_table_to_table
--不需要输出参数 所以不需要写参数
as
--过程要用到的参数
declare @table1_count int,
@table_id int,
@table_code nvarchar(200),
@table_one int,
@table_two int,
@table_three int,
@table_dates nvarchar(200),
@table_qiansanshangci nvarchar(200),
@table_qiansanjiange int

---取出条数
select @table1_count=COUNT(*) from xuan5kjjgid
--准备循环
declare @i int;
set @i=0;
--循环每一条数据
while @i<@table1_count
begin
--查出每一条数据
select @table_id=id,@table_code=code,@table_dates=dates,@table_qiansanshangci=qiansanshangci,@table_qiansanjiange=qiansanjiange from xuan5kjjgid where id =188831+@i
---创建变量表 因为表只能初始化一次 一直到循环完成才能变量表删除 下面中只能删除数据
declare @tb table(num int)
--添加变量表 @tb 3条数据 (one(一条) two(第二条) three(第三条)数据)
insert into @tb
select one from xuan5kjjgid where id =188831+@i
union
select two from xuan5kjjgid where id =188831+@i
union
select three from xuan5kjjgid where id =188831+@i
--创建另一个变量表 并把@tb 表排序 添加进去
declare @te table(id int identity(1,1),num int)
insert into @te select num from @tb order by num
---取出排序后的数据 放到变量 @table_one @table_two @table_three
select @table_one=(select top 1 num from @te )
select @table_two=(select top 1 num from @te where id not in(select top 1 id from @te))
select @table_three=(select top 1 num from @te where id not in(select top 2 id from @te))

--把数据添加到最终的表中
insert into xuan3to5 values(@table_id,@table_code,
@table_one,@table_two,@table_three,
@table_dates,@table_qiansanshangci,@table_qiansanjiange)
set @i=@i+1;
--因为变量表 只能初始化一次 只能删除数据
delete @tb
delete @te
--循环结束
end
--存储过程结束


--执行存储过程
exec proc_table_to_table