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

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

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


3 رد (ردود) على هذا الموضوع

#1 mfseror

mfseror

    عضو

  • الأعضــاء
  • 4 مشاركة

تاريخ المشاركة 30 March 2010 - 11:02 PM

أرجو المساعدة لتحويل جدول ضخم في قاعدة البيانات لدي من الشكل التالي:
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   11.51كيلو   11 عدد مرات التحميل


#2 abdou1984

abdou1984

    عضو نشط

  • الأعضــاء
  • 270 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 31 March 2010 - 11:27 PM

السلام عليكم ورحمة الله وبركاته
----------------------------------------
اخى
شوف كده الكود ده واتبع الخطوات الموجوده فيه حيث انها شبيه للجدول اللى ارسلته . طبعا حتعدل فى الكود على حسب بيانات الجدول اللى عندك وطبعا حتعمل جدول جديد
ملاحظه :- فى الجدول الجديد مش حينفع يكون 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;


#3 mfseror

mfseror

    عضو

  • الأعضــاء
  • 4 مشاركة

تاريخ المشاركة 01 April 2010 - 01:17 AM

الأخ الكريم أبو عمار
أشكرك شكرا جزيلا على مساعدتك
جزاك الله خيرا

#4 abdou1984

abdou1984

    عضو نشط

  • الأعضــاء
  • 270 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 01 April 2010 - 01:22 AM

وجزاك الله خيرا