假设库内有100条记录就查询前80条,200条的话就查询160条

解决方案 »

  1.   

    定义一个变量@i,然后把select top(@i) * from table放到动态sql中执行
      

  2.   

    TOP 80 PERCENT?是不是这个意思?SELECT TOP 80 PERCENT * FROM TB 
      

  3.   

    declare @i int 
    select top 1  @i=i.rows*0.8
    from sysobjects o,sysindexes i  
    where o.id=i.id and o.Xtype='U' and o.name='表名'set rowcount @i
    select * from 表名不限制行以后:
    set rowcount 0
      

  4.   

    新手解答有部分内容不会
    declare
     @nu int
     
     select @nu=COUNT(*) from tb2 --查询总数量赋值给数量之后你在@nu*8/100   就是准确的Top ,也就是100/80  200/160  ..... 1000/800 select top @nu id  from tb2            --这里top@nu 用不上 请高手解答
      

  5.   

    top 80 percent嘛?如果80是个变量,请使用动态语句
      

  6.   

    DECLARE @cnt INT,@sql NVARCHAR(MAX)SELECT @cnt=COUNT(1)/80*80 FROM TB        --确定结果条数(如果总条数少于80条,返回0条数据)
    SET @sql='SELECT TOP '+LTRIM(@cnt)+' *  FROM TB'EXEC(@sql)