欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

请问一个sql依据如何写

更新时间: 2014-01-05 02:17:53 责任编辑: Author_N1

 

请教一个sql依据怎么写 ?
 一个表有3000条记录,怎么按照顺序分组插入到另一个表中, 每组1000条,组号01,02,03 ,这个语句应该怎么写呢,使用循环吗?
--参考方法--
不用循环,试试:

drop table tb

create table tb(ID int,aaa varchar(10))


insert into tb
select 1,'aa' 
go 1000


insert into tb
select 1,'bb' 
go 1000


insert into tb
select 1,'cc' 
go 1000



select *,
       right('00'+cast((ROW_NUMBER() over(order by @@servername)-1)/1000+1 as varchar),2) as group_num
from tb

--参考方法--

WITH a1 AS
(
SELECT *,ROW_NUMBER() OVER (ORDER BY @@servername) re 
FROM 表
)
SELECT *,re-CASE re%1000 WHEN 0 THEN re%1000+1000 else re%1000 end 组号
FROM a1

--参考方法--

-- 建测试表
create table 一个表(id int)

create table 另一个表(组号 varchar(5),id int)

-- 产生3000笔记录
set nocount on
declare @i int
select @i=1
while(@i<=3000)
begin
 insert into 一个表(id) values(@i)
 select @i=@i+1
end
set nocount off


-- 按照顺序分组插入到另一个表中, 每组1000条,组号01,02,03 
insert into 另一个表(组号,id)
 select '0'+rtrim(((row_number() over(order by getdate())-1)/1000)+1),id 
 from 一个表

-- 结果
select 组号,
       min(id) 'min_id',
       max(id) 'max_id'
 from 另一个表 
 group by 组号
 order by 组号

/*
组号    min_id      max_id
----- ----------- -----------
01    1           1000
02    1001        2000
03    2001        3000

(3 row(s) affected)
*/
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:17:53
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/8156/
本文WWW.DOC100.NET DOC100.NET版权所有。