mfseror بتاريخ: 30 مارس 2010 تقديم بلاغ مشاركة بتاريخ: 30 مارس 2010 أرجو المساعدة لتحويل جدول ضخم في قاعدة البيانات لدي من الشكل التالي:StoreCode StoreName Jun-07 Jul-07 Aug-071014 hh 318013.59 335452.46 285439.481015 fd 183226.87 190851.25 228375.31016 re 691919.78 764955.06 744312.58الى الشكل التالي:StoreCode StoreName month budget1014 hh Jun-07 318013.591014 hh Jul-07 335452.461014 hh Aug-07 285439.481014 hh Sep-07 285411.431014 hh Oct-07 385805.61014 hh Nov-07 400865.46مرفق لكم في اكسل شيتوشكرا table.rar اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
abdou1984 بتاريخ: 31 مارس 2010 تقديم بلاغ مشاركة بتاريخ: 31 مارس 2010 السلام عليكم ورحمة الله وبركاته ----------------------------------------اخى شوف كده الكود ده واتبع الخطوات الموجوده فيه حيث انها شبيه للجدول اللى ارسلته . طبعا حتعدل فى الكود على حسب بيانات الجدول اللى عندك وطبعا حتعمل جدول جديد ملاحظه :- فى الجدول الجديد مش حينفع يكون 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; اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mfseror بتاريخ: 31 مارس 2010 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 31 مارس 2010 الأخ الكريم أبو عمار أشكرك شكرا جزيلا على مساعدتكجزاك الله خيرا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
abdou1984 بتاريخ: 31 مارس 2010 تقديم بلاغ مشاركة بتاريخ: 31 مارس 2010 وجزاك الله خيرا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.