Ini tidak dapat dilakukan (sejauh yang saya ketahui). Ada tiga solusi, satu yang memungkinkan Anda untuk menyimpannya sebagai dua kumpulan hasil yang berbeda, dan dua lainnya yang memerlukan penggabungan hasil ke dalam kumpulan hasil yang sama (baik sebagai baris tambahan atau kolom tambahan).
- Alih-alih CTE, dorong hasilnya ke tabel sementara lalu kueri dari itu.
- Gabungkan hitungan ke dalam hasil aktual yang ditetapkan sebagai baris lain:gunakan
UNION ALL
dan berikan baris hitungan nilai yang sesuai untuk ID, Nama, dan RowID sehingga Anda dapat mengekstraknya dari data lainnya - Tambahkan
SELECT COUNT(*)
ke dalam hasil utama yang ditetapkan sebagai kolom tambahan denganCROSS JOIN
atau serupa.
Untuk yang terakhir ini, Anda dapat melakukannya dengan mengubah kueri utama Anda menjadi:
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);
Saya tidak dapat menjamin kinerjanya - Anda perlu membuat profil.