sql-server-2005 - 需要在 sql server 2005 中使用 ROW_NUMBER 而不结束

标签 sql-server-2005

<分区>

Possible Duplicate:
ROW_NUMBER() without over in SQL

我有一个对每一列进行排序的网格,一次只能显示 50 行。

我正在使用 sql server 2005 作为数据库。

现在sql server 2005中有ROW_NUMBER函数来过滤行号的数据,但是Over(order by [Column])是强制使用的。在我的例子中,我必须用不同的列对我的网格进行排序,所以我不能按子句顺序使用静态列名称。限制是,我必须使用静态查询。

你们能帮我解决这个问题吗?

最佳答案

每列使用多个 ROW_NUMBER 子句并选择相关的子句:

....
    ROW_NUMBER() OVER (ORDER BY [Column1]) as rn1,
    ROW_NUMBER() OVER (ORDER BY [Column2]) as rn2,
    ROW_NUMBER() OVER (ORDER BY [Column3]) as rn3,
    ROW_NUMBER() OVER (ORDER BY [Column4]) as rn4
....

OR 使用 CASE 表达式。注意:所有数据类型必须兼容

ROW_NUMBER() OVER (ORDER BY CASE @sort
                     WHEN 1 THEN [Column1]
                     WHEN 1 THEN [Column2]
                     WHEN 1 THEN [Column3]
                     ...
                   END

OR 如果您确实想要任意行号,请执行以下操作:

ROW_NUMBER() OVER (ORDER BY (SELECT 1)) as rn

关于sql-server-2005 - 需要在 sql server 2005 中使用 ROW_NUMBER 而不结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12914888/

相关文章:

sql-server - 哪个插入速度更快,XML 字段还是 Varchar(max) 字段?

sql - 从 sql 中的字符串中删除和替换多个字符(空格、连字符、括号、句点)

sql - 如何转换 SQL Server XML 类型值 (xsi :nil) of DateTime to null

ruby-on-rails - 将 Rails 应用程序从 Windows 连接到 SQL Server 2005

sql-server-2005 - SQL Server 2005 计算列结果来自另一个表字段值的聚合

sql - 在数据库内部操作期间检测到不一致

c# - SQL Server 日期时间问题?

sql-server - SQL Server "AFTER INSERT"触发器看不到刚刚插入的行

java - 使用 Hibernate 查询 SQL Server 2005 加密列的 Web 应用程序

sql - mysql命令超时错误