Dit kan niet (voor zover ik weet). Er zijn drie tijdelijke oplossingen, een waarmee u twee afzonderlijke resultatensets kunt behouden en de andere twee waarvoor u de resultaten in dezelfde resultatenset moet samenvoegen (als een extra rij of een extra kolom).
- Push de resultaten in plaats van een CTE naar een tijdelijke tabel en vraag daar vervolgens naar.
- Voeg de telling samen met de werkelijke resultatenset als een andere rij:gebruik een
UNION ALL
en geef de telrij geschikte waarden voor ID, Name en RowID, zodat u deze uit de rest van de gegevens kunt extraheren - Voeg de
SELECT COUNT(*)
toe in de primaire resultaatset als een extra kolom met eenCROSS JOIN
of vergelijkbaar.
Voor dit laatste kunt u dit doen door uw primaire zoekopdracht te wijzigen in:
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);
Ik kan niet instaan voor de prestaties - je zou je moeten profileren.