I am using a Common Table Expression for paging:
with query as (
Select Row_Number() over (Order By OrderNum ASC) as TableRowNum,
FirstName,
LastName
From Users
)
Select * from query where TableRowNum between 1 and 25 Order By TableRowNum ASC
Immediately after making this query, I make make an almost identical query in order to retrieve the total number of items:
with query as (
Select Row_Number() over (Order By OrderNum ASC) as TableRowNum,
FirstName,
LastName
From Users
)
Select Count(*) from query
I have tried combining these together (ie: define the CTE, query the data and then query the Count, but when I do this, I get an error message "Invalid object name 'query'" in response the the second query (the Count).
Is there any way to combine these two queries into one, to save a round-trip to the DB?
According to Microsoft in this link:
In that new CTE referencing the previous defined CTE, we can make the count query:
'query' is the main CTE and 'totalCount' is using it for get the total rows count
Microsoft should have an example for a common task like this.
If you do not require them in 2 different queries, you can try
If you do require 2 different queries, rather use a table var
You can do that like this :