Nie da się tego zrobić (o ile mi wiadomo). Istnieją trzy obejścia, jedno, które pozwala zachować dwa różne zestawy wyników, a pozostałe dwa wymagają scalenia wyników w ten sam zestaw wyników (jako dodatkowy wiersz lub dodatkowa kolumna).
- Zamiast CTE, umieść wyniki w tabeli tymczasowej, a następnie zapytaj z niej.
- Połącz liczbę z rzeczywistym zestawem wyników jako inny wiersz:użyj
UNION ALL
i nadaj wierszowi licznika odpowiednie wartości dla ID, Name i RowID, aby można było wyodrębnić je z pozostałych danych - Dodaj
SELECT COUNT(*)
do podstawowego zestawu wyników jako dodatkowa kolumna zCROSS JOIN
lub podobne.
W tym drugim przypadku możesz to zrobić, zmieniając podstawowe zapytanie na:
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);
Nie mogę ręczyć za wydajność – musisz profilować.