Dette kan ikke lade sig gøre (så vidt jeg ved). Der er tre løsninger, en som giver dig mulighed for at beholde som to adskilte resultatsæt, og de to andre som kræver at resultaterne flettes ind i det samme resultatsæt (som enten en ekstra række eller en ekstra kolonne).
- I stedet for en CTE skal du skubbe resultaterne ind i en midlertidig tabel og derefter forespørge fra den.
- Flet optællingen ind i det faktiske resultatsæt som en anden række:brug en
UNION ALL
og giv optællingsrækken passende værdier for ID, Navn og RowID, så du kan udtrække det fra resten af dataene - Tilføj
SELECT COUNT(*)
ind i det primære resultatsæt som en ekstra kolonne med enCROSS JOIN
eller lignende.
For sidstnævnte kan du gøre det ved at ændre din primære forespørgsel til:
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);
Jeg kan ikke stå inde for præstationen - du skal profilere dig.