读书人

求 SQL 语句,该怎么处理

发布时间: 2012-03-24 14:00:46 作者: rapoo

求 SQL 语句

SQL code
if object_id('tblDemoData') is not null    drop table tblDemoDatagocreate table tblDemoData(    id int identity(1, 1) primary key,    number int,    data varchar(100))godeclare @number intset @number = 1while @number < 500    begin        insert into tblDemoData            (number, data)             values             (@number, 'XXXXXXXXXXXX');        set @number = @number + 1;    endgo/*根据number进行条件筛选,有条件如下:1. 起始10条记录2. 最后5条记录3. 中间数据每间隔N条输出N,N+1,N+2如下(N=15):    number        data-------------    ------------------    1            XXXXXXXXXXXX    2            XXXXXXXXXXXX    3            XXXXXXXXXXXX    ...          ...    8            XXXXXXXXXXXX    9            XXXXXXXXXXXX    10           XXXXXXXXXXXX    15           XXXXXXXXXXXX    16           XXXXXXXXXXXX    17           XXXXXXXXXXXX    30           XXXXXXXXXXXX    31           XXXXXXXXXXXX    32           XXXXXXXXXXXX    ...    495          XXXXXXXXXXXX    496          XXXXXXXXXXXX    497          XXXXXXXXXXXX    498          XXXXXXXXXXXX    499          XXXXXXXXXXXX*/


[解决办法]
try
SQL code
select * from (select top 10 * from tblDemoData order by id) aunion select * from tblDemoData where id%15=0 or (id-1)%15=0 or (id-2)%15=0union select * from (select top 5 * from tblDemoData order by id desc) c
[解决办法]
我没有看懂..是不是想做嵌套循环啊!
刚开始10条 加着加着变少 最后有5条
[解决办法]
SQL code
create table tblDemoData(    id int identity(1, 1) primary key,    number int,    data varchar(100))godeclare @number intset @number = 1while @number < 500    begin        insert into tblDemoData            (number, data)             values             (@number, 'XXXXXXXXXXXX');        set @number = @number + 1;    endgo---------------declare @num as intset @num = 15select * from tblDemoData where id <=10 or id > (select count(1) from tbldemodata) - 5 or id between @num and @num + 2drop table tblDemoData/*id          number      data                                                                                                 ----------- ----------- ---------------------------------------------------------------- 1           1           XXXXXXXXXXXX2           2           XXXXXXXXXXXX3           3           XXXXXXXXXXXX4           4           XXXXXXXXXXXX5           5           XXXXXXXXXXXX6           6           XXXXXXXXXXXX7           7           XXXXXXXXXXXX8           8           XXXXXXXXXXXX9           9           XXXXXXXXXXXX10          10          XXXXXXXXXXXX15          15          XXXXXXXXXXXX16          16          XXXXXXXXXXXX17          17          XXXXXXXXXXXX495         495         XXXXXXXXXXXX496         496         XXXXXXXXXXXX497         497         XXXXXXXXXXXX498         498         XXXXXXXXXXXX499         499         XXXXXXXXXXXX(所影响的行数为 18 行)*/
[解决办法]
SQL code
--每隔5个取一次(适用于SQL SERVER 2005或是2008)declare @i int set @i=5;with maco as(select * from tblDemoData where id<11 orid>(select count(1) from tblDemoData) -5 or (id-11)%(@i+1)=0 )select distinct b.* from maco a left join tblDemoData b on a.id=b.id+1 or a.id=b.id-1 or a.id=b.id 

读书人网 >SQL Server

热点推荐