比如我有一个表一列数1,2,3,4,5,6,7,8,9,10.我想要隔一行取出1,3,5,7,9。或者隔两行取1,4,7,10。用存储过程如何才能做到?求牛人指教!

解决方案 »

  1.   

    select number from (select number,row=row_number()over(order by getdate()) from master..spt_values where type='p' and number between 1 and 10)t where row%3=1
      

  2.   

    select * from 表名 where 列名+1%2=0     --隔一行取一个
    select * from 表名 where 列名+2%3=0     --隔两行取一个
      

  3.   

    假如数据库名为:xuexi
    表名为:CS
    列名为:sz
    那么SQL语句如下(加入到你的存储过程程序段里就可以了):
    use xuexi
    declare @i int
    declare mycursor scroll cursor for select * from cs for update of sz
    open mycursor
    select @i=count(*) from cs fetch next from mycursor
    while @@fetch_status=0 and @i>1 
    begin
     fetch RELATIVE 2 from mycursor --这里的RELATIVE 2 你指定2就表示隔行,你指定3就表示隔2行行
     set @i=@i-1
    end
    close mycursor
    deallocate mycursor
      

  4.   

    我只是举个例子,隔2条取一条主要是row%3=1
      

  5.   


    少俩括号...
    select * from 表名 where (列名+1)%2=0     --隔一行取一个
    select * from 表名 where (列名+2)%3=0     --隔两行取一个
      

  6.   


    嗯,用RELATIVE提醒到我了