Esto no se puede hacer (que yo sepa). Hay tres soluciones alternativas, una que le permite mantener como dos conjuntos de resultados distintos y las otras dos que requieren fusionar los resultados en el mismo conjunto de resultados (ya sea como una fila adicional o una columna adicional).
- En lugar de un CTE, inserte los resultados en una tabla temporal y luego consulte desde allí.
- Fusione el conteo en el conjunto de resultados real como otra fila:use
UNION ALL
y asigne a la fila de conteo valores adecuados para ID, Nombre e ID de fila para que pueda extraerlo del resto de los datos - Agregue
SELECT COUNT(*)
en el conjunto de resultados principal como una columna adicional conCROSS JOIN
o similar.
Para esto último, puede hacerlo cambiando su consulta principal a:
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);
No puedo responder por el rendimiento, tendrías que crear un perfil.