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

मैं बच्चों से माता-पिता तक एसक्यूएल में पेड़ जैसी संरचना में डेटा कैसे जोड़ सकता हूं?

इससे पूरी रिपोर्ट मिल जाएगी

SELECT t1.DEPARTMENT_ID
     , t1.PARENT_DEP_ID
     , t1.DEPARTMENT   
     , Sum(t2.Amount) Amount
FROM   TREE_DATA t1
       INNER JOIN TREE_DATA t2 
       ON t1.DEPARTMENT = SUBSTR(t2.DEPARTMENT, 1, LENGTH(t1.DEPARTMENT))
WHERE  t1.Amount = 0
GROUP BY t1.DEPARTMENT_ID, t1.PARENT_DEP_ID, t1.DEPARTMENT

UNION ALL

SELECT DEPARTMENT_ID
     , PARENT_DEP_ID
     , DEPARTMENT   
     , Amount
FROM   TREE_DATA
WHERE  Amount > 0
ORDER BY DEPARTMENT

पहली क्वेरी बिना राशि के ओन्स के लिए विभाग के नाम की संरचना को हैक करके रोलिंग योग प्राप्त करती है, दूसरी को लीफ्स मिलती है। t को समान क्रम प्राप्त करने के लिए कोई स्तंभ संयोजन नहीं मिला, लगता है कि पत्ते अव्यवस्थित हैं।

SQLFiddle डेमो

मैंने एक पुनरावर्ती CTE लिखने का प्रयास किया है , लेकिन समग्र कार्य करना संभव नहीं है, जैसे कि SUM इसमें।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. संक्षिप्त समय क्षेत्र के साथ स्ट्रिंग का टाइमस्टैम्प में रूपांतरण

  2. Oracle शटडाउन त्रुटि ORA-01033

  3. ऑरैकल डेटाबेस पर सभी दृश्य प्रदर्शित करें

  4. Oracle UTL_SMTP . के माध्यम से मेल भेजने का प्रयास करते समय ACL त्रुटि

  5. किसी फ़ंक्शन को कॉल करने के लिए `SELECT` का उपयोग करना