How to retrieve the total row count of a query with TOP

前端 未结 5 2129
梦如初夏
梦如初夏 2021-01-06 07:22

I have a SQL Server 2008 query

SELECT TOP 10 *
FROM T
WHERE ...
ORDER BY ...

I\'d like to get also the total number of the rows. The obious

5条回答
  •  忘掉有多难
    2021-01-06 07:45

    Do you want a second query?

    SELECT TOP 10
        *, foo.bar
    FROM
        T
        CROSS JOIN
        (SELECT COUNT(*) AS bar FROM T WHERE ...) foo
    WHERE
        ...
    ORDER BY
        ...
    

    OR

    DECLARE @bar int
    SELECT @bar = COUNT(*) AS bar FROM T WHERE ...
    SELECT TOP 10
        *, @bar
    FROM
        T
        CROSS JOIN
        (SELECT COUNT(*) AS bar FROM T WHERE ...) foo
    WHERE
        ...
    ORDER BY
        ...
    

    Or (Edit: using WITH)

    WITH cTotal AS
    (
        SELECT COUNT(*) AS bar FROM T WHERE ...)
    )
    SELECT TOP 10
        *, cTotal .bar
    FROM
        T
    WHERE
        ...
    ORDER BY
        ...
    

提交回复
热议问题