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

SQL OracleSQL और InnerQuery त्रुटि के साथ अभिव्यक्ति द्वारा समूह नहीं है

जैसा कि आप ORACLE डॉक्स में देख सकते हैं।

इसका मतलब है कि अगर आप केवल o.CUSTOMER_ID . के आधार पर समूह बनाते हैं , चयन सूची में अन्य सभी फ़ील्ड समग्र कार्य (जैसे COUNT, MAX, आदि) होने चाहिए।

फ़ील्ड के मामले में जो प्रत्येक समूह (नाम और उपनाम के रूप में) में मूल्यों को दोहराते हैं, आपको उन्हें GORUP BY क्लॉज में शामिल करना चाहिए।

खर्च की गई राशि को शामिल करने के लिए, आप उत्पादों के साथ एक और LEFT JOIN जोड़ सकते हैं और SUM(op.amount*p.price) चुन सकते हैं। बिना सबक्वेरी के।

वह होगा

SELECT o.CUSTOMER_ID AS "ID", c.name AS "Name", c.SURNAME AS "Surname",
       SUM(op.AMOUNT*p.PRICE) AS "Money spent"
  FROM ORDERS o 
       LEFT JOIN CUSTOMERS c ON c.ID = o.CUSTOMER_ID 
       LEFT JOIN ORDERS_PRODUCTS op ON op.ORDER_ID = o.id
       LEFT JOIN PRODUCTS p ON p.id = op.PRODUCT_ID
 GROUP BY o.CUSTOMER_ID, c.name AS "Name", c.SURNAME
 ORDER BY o.CUSTOMER_ID, c.name AS "Name", c.SURNAME;

हमेशा याद रखें कि अपने प्रश्नों के क्रमबद्ध क्रम को परिभाषित करें, अन्यथा यह अपरिभाषित हो जाएगा।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. खाली लेकिन विशाल LOB कॉलम से कैसे छुटकारा पाएं?

  2. पीएल/एसक्यूएल रिकॉर्ड के साथ ओरेकल प्रक्रिया को कॉल करना स्प्रिंग जेडीबीसी से टाइप करें

  3. प्रदाता Oracle क्लाइंट के संस्करण के साथ संगत नहीं है

  4. Oracle ऐस परिवर्तन

  5. जावा से sqlldr का उपयोग करना