Das geht (soweit ich weiß) nicht. Es gibt drei Problemumgehungen, eine ermöglicht es Ihnen, zwei unterschiedliche Ergebnismengen beizubehalten, und die anderen beiden erfordern das Zusammenführen der Ergebnisse in derselben Ergebnismenge (entweder als zusätzliche Zeile oder als zusätzliche Spalte).
- Anstelle eines CTE die Ergebnisse in eine temporäre Tabelle schieben und dann von dieser abfragen.
- Fügen Sie die Anzahl als weitere Zeile in die tatsächliche Ergebnismenge ein:Verwenden Sie ein
UNION ALL
und geben Sie der Zählzeile geeignete Werte für ID, Name und RowID, damit Sie sie aus den restlichen Daten extrahieren können - Fügen Sie
SELECT COUNT(*)
hinzu in die primäre Ergebnismenge als zusätzliche Spalte mit einemCROSS JOIN
oder ähnliches.
Für Letzteres können Sie dies tun, indem Sie Ihre primäre Abfrage ändern 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);
Ich kann nicht für die Leistung bürgen - Sie müssten ein Profil erstellen.