الانتقال إلى المحتوى

المساعدة لتحويل جدول


mfseror

Recommended Posts

أرجو المساعدة لتحويل جدول ضخم في قاعدة البيانات لدي من الشكل التالي:
StoreCode StoreName Jun-07 Jul-07 Aug-07
1014 hh 318013.59 335452.46 285439.48
1015 fd 183226.87 190851.25 228375.3
1016 re 691919.78 764955.06 744312.58
الى الشكل التالي:
StoreCode StoreName month budget
1014 hh Jun-07 318013.59
1014 hh Jul-07 335452.46
1014 hh Aug-07 285439.48
1014 hh Sep-07 285411.43
1014 hh Oct-07 385805.6
1014 hh Nov-07 400865.46
مرفق لكم في اكسل شيت
وشكرا

table.rar

رابط هذا التعليق
شارك

السلام عليكم ورحمة الله وبركاته
----------------------------------------
اخى
شوف كده الكود ده واتبع الخطوات الموجوده فيه حيث انها شبيه للجدول اللى ارسلته . طبعا حتعدل فى الكود على حسب بيانات الجدول اللى عندك وطبعا حتعمل جدول جديد
ملاحظه :- فى الجدول الجديد مش حينفع يكون PRIMARY KEY هو STORCODE لانه حيتكرر
الكود

-- FIRST TABLE ---------------------
CREATE TABLE TMP_X( T_ID NUMBER , T_DESC VARCHAR2(10), COL1 VARCHAR2(10),COL2 VARCHAR2(10),COL3 VARCHAR2(10));

---- NEW TABLE ----------------------------
CREATE TABLE TMP_Y (T_ID NUMBER , T_DESC VARCHAR2(10) , COL VARCHAR2(10)  ,COL_VALUE NUMBER(10));

---  SAMPLE DATA FOR THE FIRST TABLE 
INSERT INTO TMP_X ( T_ID, T_DESC, COL1, COL2, COL3 ) VALUES ( 
1, 'AA', '10', '20', '30'); 
INSERT INTO TMP_X ( T_ID, T_DESC, COL1, COL2, COL3 ) VALUES ( 
2, 'BB', '40', '50', '60'); 
INSERT INTO TMP_X ( T_ID, T_DESC, COL1, COL2, COL3 ) VALUES ( 
3, 'CC', '70', '80', '90'); 
INSERT INTO TMP_X ( T_ID, T_DESC, COL1, COL2, COL3 ) VALUES ( 
4, 'DD', '55', '66', '34'); 
INSERT INTO TMP_X ( T_ID, T_DESC, COL1, COL2, COL3 ) VALUES ( 
34, 'RR', '45', '76', '87'); 
commit;

--   CURSOR TO INSERT DATA TO THE NEW TABLE ---------------------


BEGIN FOR REC IN ( SELECT * FROM TMP_X  )
LOOP
FOR REC1 IN (
SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME='TMP_X' AND COLUMN_NAME  NOT IN ('T_ID','T_DESC')
              ) 
 LOOP
INSERT INTO TMP_Y (T_ID,T_DESC,COL) VALUES (REC.T_ID,REC.T_DESC ,REC1.COLUMN_NAME) ;
END LOOP;
END LOOP;
END;

--  UPDATE STAMENTS TO GET DATA 

UPDATE TMP_Y TT
SET COL_VALUE =(  SELECT  COL1 FROM TMP_X T WHERE T_ID=TT.T_ID AND 'COL1' = 
             (SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME='TMP_X' AND COLUMN_NAME ='COL1')
              )
 WHERE COL='COL1'  ;

UPDATE TMP_Y TT
SET COL_VALUE =(  SELECT  COL2 FROM TMP_X T WHERE T_ID=TT.T_ID AND 'COL2' = 
              (SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME='TMP_X' AND COLUMN_NAME ='COL2')
               )
 WHERE COL='COL2' ;

    
UPDATE TMP_Y TT
SET COL_VALUE =(  SELECT  COL3 FROM TMP_X T WHERE T_ID=TT.T_ID AND 'COL3' = 
(SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME='TMP_X' AND COLUMN_NAME ='COL3')
                           )
 WHERE COL='COL3' ;
 
 COMMIT;

رابط هذا التعليق
شارك

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية