मैं अपनी आलोचना को यह कहने के लिए सीमित कर दूंगा कि आपकी टेबल डिज़ाइन सामान्यीकृत नहीं है, और बहुत सुंदर नहीं है, लेकिन मुझे लगता है कि आपके पास आपके कारण हैं। मैं आमतौर पर इन "रोटेशन" प्रश्नों को 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>;