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

कॉलम चयन सूची में अमान्य है क्योंकि यह या तो एक समग्र कार्य या ग्रुप बाय क्लॉज में शामिल नहीं है

दूसरे शब्दों में कहें तो यह त्रुटि आपको बता रही है कि SQL सर्वर नहीं जानता कि कौन सा B समूह से चयन करने के लिए।

या तो आप एक विशिष्ट मान का चयन करना चाहते हैं (उदा. MIN , SUM , या AVG ) इस मामले में आप उपयुक्त समग्र फ़ंक्शन का उपयोग करेंगे, या आप प्रत्येक मान को एक नई पंक्ति के रूप में चुनना चाहते हैं (अर्थात B सहित) GROUP BY . में फ़ील्ड सूची)।

निम्नलिखित डेटा पर विचार करें:

ID  A   B
1   1  13
1   1  79
1   2  13
1   2  13
1   2  42

क्वेरी

SELECT A, COUNT(B) AS T1 
FROM T2 
GROUP BY A

वापस आ जाएगा:

A  T1
1  2
2  3

जो सब ठीक और अच्छा है।

हालांकि निम्नलिखित (अवैध) प्रश्न पर विचार करें, जो इस त्रुटि को उत्पन्न करेगा:

SELECT A, COUNT(B) AS T1, B 
FROM T2 
GROUP BY A

और इसका लौटा हुआ डेटा सेट समस्या को दर्शाता है:

A  T1  B
1  2   13? 79? Both 13 and 79 as separate rows? (13+79=92)? ...?
2  3   13? 42? ...?

हालांकि, निम्नलिखित दो प्रश्न इसे स्पष्ट करते हैं, और इससे त्रुटि नहीं होगी:

  1. समुच्चय का उपयोग करना

    SELECT A, COUNT(B) AS T1, SUM(B) AS B
    FROM T2
    GROUP BY A
    

    वापस आ जाएगा:

    A  T1  B
    1  2   92
    2  3   68
    
  2. कॉलम को GROUP BY . में जोड़ना सूची

    SELECT A, COUNT(B) AS T1, B
    FROM T2
    GROUP BY A, B
    

    वापस आ जाएगा:

    A  T1  B
    1  1   13
    1  1   79
    2  2   13
    2  1   42
    


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सभी NULLs को प्रतिस्थापित करता है

  2. आप SQL Server 2005 डेटा को Excel में कैसे स्थानांतरित या निर्यात करते हैं?

  3. SQL डेटाबेस में अरबी स्टोर करें

  4. SQL सर्वर (T-SQL) में एक विभाजन को स्विच-आउट करें

  5. SQL क्वेरी द्वारा किसी विशेष डेटाबेस के सभी तालिका नाम प्राप्त करें?