Detta kan inte göras (såvitt jag är medveten om). Det finns tre lösningar, en som låter dig behålla som två distinkta resultatuppsättningar och de andra två som kräver att resultaten slås samman till samma resultatuppsättning (som antingen en extra rad eller en extra kolumn).
- Istället för en CTE, tryck in resultaten i en tillfällig tabell och fråga sedan från den.
- Slå samman antalet till den faktiska resultatuppsättningen som en annan rad:använd en
UNION ALL
och ge räkneraden lämpliga värden för ID, Name och RowID så att du kan extrahera den från resten av data - Lägg till
SELECT COUNT(*)
i den primära resultatuppsättningen som en extra kolumn med enCROSS JOIN
eller liknande.
För det senare kan du göra det genom att ändra din primära fråga till:
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);
Jag kan inte garantera prestationen - du måste profilera dig.