Това не може да се направи (доколкото ми е известно). Има три заобиколни решения, едното ви позволява да запазите като два отделни набора от резултати, а другите две изискват обединяване на резултатите в един и същ набор от резултати (като допълнителен ред или допълнителна колона).
- Вместо CTE, избутайте резултатите във временна таблица, след което направете заявка от нея.
- Слейте броя в действителния набор от резултати като друг ред:използвайте
UNION ALL
и дайте на реда за броене подходящи стойности за ID, Name и RowID, така че да можете да ги извлечете от останалите данни - Добавете
SELECT COUNT(*)
в основния набор от резултати като допълнителна колона сCROSS JOIN
или подобни.
За последното можете да го направите, като промените основната си заявка на:
SELECT Id, Name, RowId, countTable.totalRows
FROM ResultsTemp
CROSS JOIN (SELECT COUNT(*) AS totalRows FROM ResultsTemp) AS countTable
GROUP BY Id, Name, RowId
HAVING RowId BETWEEN @StartRow and (@StartRow + @MaxRows);
Не мога да гарантирам за представянето - трябва да направите профил.