यह नहीं किया जा सकता (जहाँ तक मुझे पता है)। तीन समाधान हैं, एक जो आपको दो अलग-अलग परिणाम सेट के रूप में रखने की अनुमति देता है, और अन्य दो जिसके लिए परिणामों को एक ही परिणाम सेट में मर्ज करने की आवश्यकता होती है (एक अतिरिक्त पंक्ति या एक अतिरिक्त कॉलम के रूप में)।
- CTE के बजाय, परिणामों को एक अस्थायी तालिका में धकेलें और फिर उससे पूछताछ करें।
- एक और पंक्ति के रूप में सेट किए गए वास्तविक परिणाम में गणना को मर्ज करें:एक
UNION ALLका उपयोग करें और गिनती पंक्ति को आईडी, नाम और पंक्ति के लिए उपयुक्त मान दें ताकि आप इसे शेष डेटा से निकाल सकें SELECT COUNT(*)जोड़ें एकCROSS JOINके साथ एक अतिरिक्त कॉलम के रूप में सेट प्राथमिक परिणाम में या समान।
इसके लिए आप अपनी प्राथमिक क्वेरी को इसमें बदलकर कर सकते हैं:
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);
मैं प्रदर्शन की पुष्टि नहीं कर सकता - आपको प्रोफ़ाइल की आवश्यकता होगी।