动态SQL 语句 
用 EXEC() 或者 SP_EXECUTESQL

解决方案 »

  1.   

    select top 10 *  
    from
    (
      select *,i=row_number() over(order by 字段)
      from tb
    ) t
    where i>10
      

  2.   

    谢谢楼上的,但好象理解错了我的意思,我现在的问题是如何能在row_number() OVER()里不用ORDER BY语句,因为我每次执行row_number()的表不是固定的表自然ORDER BY放的字段也就不一样,谢谢
      

  3.   

    写存储过程..传入参数..  然后用动态SQL 语句拼接起来执行
      

  4.   

    SQL 语句直接多传两个参数,一个是排序的栏位名称,一个是排序的方式ASC/DESC
      

  5.   

    我现在是将程序从DB2移植到SQLSERVER所以不能动程序的,也不能有存储过程,有没有其他方法呢
      

  6.   

    OVER()  中的ORDER BY 是必选的, 不过如果你不考虑排列顺序的话, 可以用函数
    col_name('TableName',1)  
    也就是按第一列排序。
    下面是一个例子.
    SELECT * ,
    ROW_NUMBER = ROW_NUMBER() OVER (
    ORDER BY col_name('TableName',1)  ) FROM
    [TableName] 
    不知道上面的能不能满足你的需求
      

  7.   

    这是个公用的分页,我根本不知道TableName呀
      

  8.   

    我现在是将程序从DB2移植到SQLSERVER所以不能动程序的,也不能有存储过程,有没有其他方法呢
    --------------------------------------
    什么都不能动那叫什么移植,那叫跨平台