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

Oracle 10g PL/SQL- अपडेट कॉलम वैल्यू के रूप में परिणाम चुनें

मैं अपनी आलोचना को यह कहने के लिए सीमित कर दूंगा कि आपकी टेबल डिज़ाइन सामान्यीकृत नहीं है, और बहुत सुंदर नहीं है, लेकिन मुझे लगता है कि आपके पास आपके कारण हैं। मैं आमतौर पर इन "रोटेशन" प्रश्नों को DECODE का उपयोग करके एक समग्र कॉलम के साथ जोड़कर करता हूं, मेरी कुंजी द्वारा समूहीकृत - इस मामले में, आपकी छद्म-कुंजी, ट्रंक (आईडी/100)। इसे अपडेट सिंटैक्स के साथ मिलाएं जो टुपल्स का उपयोग करता है:

 UPDATE Foo
    SET (a, b, c, d)
      = (w, x, y, z);

और आपको मिलता है:

  UPDATE KeyMap
     SET
       ( key1
       , key2
       , key3
       , key4
       ...
       , key99
       )
       = ( SELECT MAX(decode(mod(ID, 100), 1, Key, NULL))
                , MAX(decode(mod(ID, 100), 2, Key, NULL))
                , MAX(decode(mod(ID, 100), 3, Key, NULL))
                , MAX(decode(mod(ID, 100), 4, Key, NULL))
                ...
                , MAX(decode(mod(ID, 100), 99, Key, NULL))
             FROM Source
            WHERE Trunc(Source.ID / 100) = KeyMap.batchId
            GROUP BY Trunc(Source.ID / 100)
         )
   WHERE BatchId = <x>;


  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. कृपया SQLPLUS के साथ मदद करें? प्रारंभ में DEFINE `OFF` के साथ SQLPLUS स्टार्टअप कैसे बनाएं?

  3. मैं oracle11g में एक प्रकार को कैसे परिभाषित कर सकता हूं जो उस प्रकार के संग्रह का संदर्भ देता है?

  4. ORA-00900:अमान्य SQL कथन त्रुटि? मेरे sql में क्या गलत है?

  5. अद्यतन के लिए थोक संग्रह का उपयोग कर