【问题标题】:Complex SQL pagination Query复杂的SQL分页查询
【发布时间】:2011-11-08 16:49:03
【问题描述】:

我正在使用this 问题的解决方案对我的数据进行分页。

我现在需要将此解决方案用于更复杂的查询。 IE。括号内的SELECT 具有连接和聚合函数。

这是我用作参考的解决方案:

;WITH Results_CTE AS
(
    SELECT
        Col1, Col2, ...,
        ROW_NUMBER() OVER (ORDER BY SortCol1, SortCol2, ...) AS RowNum
    FROM Table
    WHERE <whatever>
)
SELECT *
FROM Results_CTE
WHERE RowNum >= @Offset
AND RowNum < @Offset + @Limit

我需要合并到上述解决方案中的查询:

SELECT users.indicator, COUNT(*) as 'queries' FROM queries
INNER JOIN calls ON queries.call_id = calls.id
INNER JOIN users ON calls.user_id = users.id
WHERE queries.isresolved=0 AND users.indicator='ind1'
GROUP BY users.indicator ORDER BY queries DESC

我怎样才能做到这一点?到目前为止,我已经通过删除ORDER BY queries DESC 部分并将其放在ROW_NUMBER() OVER (ORDER BY ...) AS RowNum 行中使其工作,但是当我这样做时,它不允许我按该列排序(“无效的列名'查询'。 ")。

我需要做什么才能让它按此列排序?

编辑:使用 SQL Server 2008

【问题讨论】:

    标签: sql sql-server tsql pagination


    【解决方案1】:

    尝试 ORDER BY COUNT(*) DESC 。它适用于 MySQL ...不确定 SQL Server 2008

    【讨论】:

    • 我为什么不试试。工作,非常感谢。 8 分钟前我可以将此标记为答案
    【解决方案2】:

    我认为查询您的别名以获取 count(*) 列 然后像这样使用

    SELECT users.indicator, COUNT(*) as 'queries' FROM queries
    INNER JOIN calls ON queries.call_id = calls.id
    INNER JOIN users ON calls.user_id = users.id
    WHERE queries.isresolved=0 AND users.indicator='ind1'
    GROUP BY users.indicator ORDER BY COUNT(*) DESC
    

    http://oops-solution.blogspot.com/2011/11/string-handling-in-javascript.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-29
      • 1970-01-01
      • 2011-03-04
      • 1970-01-01
      • 1970-01-01
      • 2011-09-22
      • 2016-01-22
      • 1970-01-01
      相关资源
      最近更新 更多