Questo non può essere fatto (per quanto ne so). Esistono tre soluzioni alternative, una che ti consente di mantenere due set di risultati distinti e le altre due che richiedono l'unione dei risultati nello stesso set di risultati (come riga o colonna aggiuntiva).
- Invece di un CTE, inserisci i risultati in una tabella temporanea, quindi esegui una query da quella.
- Unisci il conteggio nel set di risultati effettivo come un'altra riga:usa un
UNION ALL
e dai alla riga di conteggio valori adatti per ID, Nome e RowID in modo da poterlo estrarre dal resto dei dati - Aggiungi il
SELECT COUNT(*)
nel set di risultati primario come colonna extra con unCROSS JOIN
o simili.
Per quest'ultimo, puoi farlo cambiando la tua query principale 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);
Non posso garantire la performance:dovresti creare un profilo.