Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

TempResults AS का उपयोग करते समय दो परिणाम सेट लौटाएं

यह नहीं किया जा सकता (जहाँ तक मुझे पता है)। तीन समाधान हैं, एक जो आपको दो अलग-अलग परिणाम सेट के रूप में रखने की अनुमति देता है, और अन्य दो जिसके लिए परिणामों को एक ही परिणाम सेट में मर्ज करने की आवश्यकता होती है (एक अतिरिक्त पंक्ति या एक अतिरिक्त कॉलम के रूप में)।

  1. CTE के बजाय, परिणामों को एक अस्थायी तालिका में धकेलें और फिर उससे पूछताछ करें।
  2. एक और पंक्ति के रूप में सेट किए गए वास्तविक परिणाम में गणना को मर्ज करें:एक UNION ALL का उपयोग करें और गिनती पंक्ति को आईडी, नाम और पंक्ति के लिए उपयुक्त मान दें ताकि आप इसे शेष डेटा से निकाल सकें
  3. 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);

मैं प्रदर्शन की पुष्टि नहीं कर सकता - आपको प्रोफ़ाइल की आवश्यकता होगी।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CASCADE DELETE को सक्षम करने के लिए मैं किसी तालिका को कैसे संपादित करूं?

  2. टी-एसक्यूएल का उपयोग कर स्ट्रिंग से संख्यात्मक भाग कैसे प्राप्त करें?

  3. XML डेटा को SQL सर्वर डेटाबेस कॉलम में विभाजित करने का सबसे अच्छा तरीका

  4. वस्तु चर की एसएसआईएस गणना?

  5. प्रक्रिया पैरामीटर की अपेक्षा करती है जो आपूर्ति नहीं की गई थी