【发布时间】:2012-05-18 11:55:32
【问题描述】:
我有一个类似的查询:
SELECT
R.*
FROM
(SELECT A, B,
(SELECT smth from another table) as C,
ROW_NUMBER() OVER (ORDER BY C DESC) AS RowNumber
FROM SomeTable) R
WHERE
RowNumber BETWEEN 10 AND 20
这给了我ORDER BY C DESC 的错误。
我明白为什么会出现这个错误,所以我考虑添加另一个 SELECT 和 ORDER BY,而不是选择从 10 到 20 的行。但我认为嵌套 3 个 @987654325 并不好@ 命令。
还有什么方法可以选择这些行?
【问题讨论】:
-
我了解产生
C的子查询与您尝试生成行号的子查询相关。如果是这样,您可以尝试将相关子查询转换为您可以加入的子查询。 (我的猜测是您只需要使用关联条件作为连接条件,但如果不查看子查询以及它与整个查询的其他部分之间的关系,我无法确定。) -
子查询正在从另一个具有简单条件的表中选择计数。
-
… (SELECT s.A, s.B, a.C, ROW_NUMBER OVER (ORDER BY a.C DESC) FROM SomeTable s INNER JOIN (SELECT Key, COUNT(*) AS C FROM AnotherTable) a ON s.Key = c.Key) R …?
标签: sql sql-server sql-order-by