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

Oracle SQL नेस्टेड संबंध एक स्तर में

मुझे यकीन नहीं है कि मैं उस तर्क को पूरी तरह से समझता हूं जिसे आप लागू करने का प्रयास कर रहे हैं, लेकिन यहां SQL है जो आपकी तालिका बनाता है और आपके उदाहरण आउटपुट को डुप्लिकेट करता है। इसका परीक्षण https://livesql.oracle.com पर किया गया था।

कृपया इसे नमक के दाने के साथ लें क्योंकि यदि आपके डेटा में डुप्लिकेट पंक्तियाँ या चक्र या क्या नहीं हो सकता है, जो आपके उदाहरण में प्रदर्शित नहीं है, तो क्वेरी में संशोधन की आवश्यकता हो सकती है।

रूपरेखा:

  1. "with" क्लॉज में, हम "ColumnA" और "ColumnB" को एक ही कॉलम में पिवट करते हैं, और यह संरक्षित करने के लिए col_src जोड़ते हैं कि नया "ColumnAB" कौन सा है।

  2. फिर हम एक मेल खाने वाले कॉलम डी और पिछले कॉलम सी से मेल खाने वाले कॉलम ए/बी से जुड़ते हुए दोबारा पूछताछ करते हैं।

  3. प्रदान किए गए आदेश से मिलान करने के लिए, हम इसके अनुसार क्रमबद्ध करते हैं:

    • पुनरावर्ती स्तर
    • कॉलम सी
    • क्या स्रोत कॉलम ए या बी था
    • कॉलम A या B का मान
create table mytable as
select 'A' "ColumnA",'B' "ColumnB",'C' "ColumnC",'E' "ColumnD" from dual
union select 'D' "ColumnA",'C' "ColumnB",'F' "ColumnC",'E' "ColumnD" from dual
union select 'C' "ColumnA",'H' "ColumnB",'I' "ColumnC",'E' "ColumnD" from dual
union select 'C' "ColumnA",'W' "ColumnB",'S' "ColumnC",'E1' "ColumnD" from dual
;

with temp as (
    select "ColumnA" as "ColumnAB", "ColumnC", "ColumnD", 'A' as col_src
    from mytable
    union all select "ColumnB", "ColumnC", "ColumnD", 'B' as col_src
    from mytable
)
select connect_by_root("ColumnAB") "ColumnV", "ColumnC" as "ColumnW" from temp
connect by prior "ColumnD" = "ColumnD" and prior "ColumnC" = "ColumnAB"
order by level,"ColumnC",col_src,  "ColumnAB"



  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 9i एक खाली स्ट्रिंग को NULL के रूप में क्यों मानता है?

  3. ऑरैकल रूपों में विशिष्ट टैब पर जा रहे हैं

  4. पीडीओ को पूरी तरह से समझना ATTR_PERSISTENT

  5. डेटाबेस कॉन्फ़िगरेशन सहायक का उपयोग करके Oracle 12c के लिए नमूना स्कीमा स्थापित करना