declare @cot int
set @cot = select count(*)*2/3 from table
select top @cot * from table

解决方案 »

  1.   

    select TOP 67 PERCENT  * from t_1
      

  2.   

    select TOP 67 PERCENT * from table
      

  3.   

    declare @cot int
    set @cot = select count(*)*2/3 from table
    set rowcount @cot
    select * from table 
    set rowcount 0
      

  4.   

    SET ROWCOUNT 限制适用对 ORDER BY 取值后在结果集中生成行。如果指定了 ORDER BY,SELECT 语句将在从某个已根据指定的 ORDER BY 分类进行了排序的值集中选择 n 行后终止。
    TOP n PERCENT子句适用于指定了该子句的单个 SELECT 语句。在执行另一个 SET ROWCOUNT 语句之前,SET ROWCOUNT 会一直有效,例如执行 SET ROWCOUNT 0 将会关闭此选项。
      

  5.   

    请问top是从上到下,那么从下到上的有没有啊?
      

  6.   

    倒序排 时的TOP不就是反过来的啊
    select top 10 * from table order by col1 ascselect top 10 * from table order by col1 desc
      

  7.   

    大哥,表是不确定的,使用所有表啊,所以排序的col1也不确定啊
      

  8.   

    Create Procedure Get67PercentRecordCount(@TableName Varchar(50),@FieldCol Varchar(100))
    As
    Declare @SQL Varchar(1000)
    Begin
    Set @SQL='Select TOP 67 Percent * From '+@TableName+' Order By '+@FieldCol
    Exec(@SQL)
    End
      

  9.   

    exec Get67PercentRecordCount '表','id'