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

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

صورة
- - - - -

طريقه لانشاء matrix


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

#1 LuisFigo

LuisFigo

    عضو

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

تاريخ المشاركة 08 October 2005 - 11:38 AM

السلام عليكم...
عندي سؤال في كتاب خاص بالداتا بيسيس و هو كالتالي:

افرض أنه يوجد لديك جدول كالتالي:

Name MonthSalary Salary
----------------------------------------------------------------------------
5000 Luis JAN
7500 Luis FEB
7700 Luis MAR
5000 Jose JAN
5010 Jose FEB
4000 Manuel MAR

و نريد الـ output كالتالي:
name JAN FEB MAR
-------------------------------
LUIS 5000 7500 7700
JOSE 5000 5010 0
MANUEL 0 0 4000
و شكراً مقدماً

#2 atared

atared

    عضو

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

تاريخ المشاركة 14 October 2005 - 09:49 PM

ارجوا الايضاح الاخ LuisFigo
ففي جدول ال output اري اسماء لاشهر في اسم العمود والتي هي اساساً عباره عن مدخلات في الجدول الاول في column ال monthsalary
من فضلك وضح اكثر

#3 LuisFigo

LuisFigo

    عضو

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

تاريخ المشاركة 16 October 2005 - 11:18 PM

ارجوا الايضاح الاخ    LuisFigo
ففي جدول ال output  اري اسماء لاشهر في اسم العمود  والتي هي اساساً عباره عن مدخلات في الجدول الاول في column  ال monthsalary
من فضلك وضح اكثر

عرض المشاركة

نعم هو كما فهمت أنت
السؤال كالتالي
عندنا الجدول التالي
صورة
و نريد المخرجات كالتالي
صورة

#4 Amgad

Amgad

    مشرف عام ومشرف قسم تحليل النظم

  • الفريق الإداري
  • 4,559 مشاركة
  • الاسم الأول:امجد
  • اسم العائلة:حلمي
  • البـلـد: Country Flag
  • المنصب الحالي:Business Systems Analyst at al Fanar Co. Riyadh KSA

تاريخ المشاركة 17 October 2005 - 03:44 AM

يمكنك استخدام هذه الطريقه لانشاء matrix

select name , sum(decode (mon_sal, 'jan' , salary )) "JAN" , sum(decode(mon_sal, 'feb', salary )) "FEB" , SUM(salary) "TOTAL" 
from testemp group by name


NAME JAN FEB TOTAL
-------------------- ---------- ---------- ----------
ahmed 1000 1500 2500
ali 2000 2300 4300

لا إله إلا الله الحليم الكريم
لا اله إلا الله العلى العظيم
لا اله إلا الله رب السماوات السبع و رب العرش العظيم
‏اللهم ارزقني قبل الموت توبة وعند الموت شهادة وبعد الموت جنة
اللهم ارزقني حسن الخاتمة
اللهم هون علينا سكرات الموت ... ونور علينا قبورنا
اللهم ارزقني الموت وأنا ساجد لك يا ارحم الراحمين
اللهم ثبتني عند سؤال الملكين
اللهم اجعل قبري روضة من رياض الجنة ولا تجعله حفرة من حفر النار
اللهم اني اعوذ بك من فتن الدنيا
اللهم ارحم ابائنا وامهاتنا واغفر لهما وتجاوز عن سيئاتهما وادخلهم فسيح جناتك ... والحقنا بهما يا رب العالمين
اللهم ارحم موتانا وموتى المسلمين واشفي مرضانا ومرضى المسلمين
اللهم اغفر للمسلمين والمسلمات والمؤمنين والمؤمنات الأحياء منهم والأموات
وبارك اللهم على سيدنا محمد صلى الله عليه وسلم
اللهم آمين ... اللهم آمين ... اللهم آمين


....


#5 التاجxyx

التاجxyx

    عضو

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

تاريخ المشاركة 19 October 2005 - 08:32 AM

السلام عليكم ورحمة الله وبركاته

مشكورين جميعا على المشاركة في حل هذه المسالة

انا حاولت مسبقاً بمثل هذه التجربة وتطلع مكررة جداً اي الاسماء كلها

ولكن عدلت في المسالة بالاعلى ولم اجد حل ولكن قد اعطي مفتاحا بحلي
وانا لي اكثر من يوم وانا احاول وان شاء الله نشوف حل جميعاً

التعديل :
SQL> select name , NVL(decode (mon_sal, 'JAN' , salary ),0) "JAN" ,
2 NVL(decode (mon_sal, 'FEB' , salary ),0) "FEB",
3 NVL(decode (mon_sal, 'MAR' , salary ),0) "MAR"
4 from employee;
الناتج:
----------------------------------------------------------------------------------------

NAME JAN FEB MAR
--------- -------- -------- -------
JOHN 8000 0 0
JOHN 0 10000 0
JOHN 0 0 10000
LUIS 10000 0 0
LUIS 0 0 10000
JOSE 9000 0 0
JOSE 0 0 10000
----------------------------------------------------------------------------------------

المشكلة في التكرار
والمطلوب تداخل الاسماء كذلك اي لدي اكثر من اسم مكرر ولكن الراتب الشهري في مختلف
ليصبح لدي
JOH 8000 10000 0
JOSE 9000 0 10000
LUIS 10000 0 10000

والمجموعة لا تجدي نفعاً ..... ((GROUP BY))
ارجو اني وضحت وكذلك ننتظر الحل بفارغ الصبر حيث ان الامر في مصلحة الجميع
وشكراً مجدداً




التاج XYX

#6 أسامة موسى

أسامة موسى

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 2,381 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 19 October 2005 - 11:53 AM

الاخ الكريم
حل الاخ AMGAD صحيح 100% ولا يوجد غبار عليه لأنك تقوم بتجميع قيم الاشهر على شكل صف ولتفادي التكرار يجب ان يتضمن الحل جميع الاشهر واعتقد ان الاخ AMGAD اعطى مثال على الحل
واعتقد انه من القليلين الذين يعطون الاجابة الصحيحة في المكان الصحيح
۩ اللهـــــــــــــــــــــــم صلي على سيدنا محمد وعلـى آله وصحبه أجمـعين ۩
۩ سبحـــــــــــــــــان الله وبحمده ....... سبحــــــــــــــــــــــــان الله العظيم ۩



يمكنك زيارتي على صفحتي الخاصة بالفيس بوك على الرابط AskOsama

يمكنك زيارتي على مدونتي الجديدة على الرابط http://askossama.blogspot.com

#7 التاجxyx

التاجxyx

    عضو

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

تاريخ المشاركة 20 October 2005 - 05:25 AM

مشكور على التصحيح وبارك الله فيكم

وان شاء الله اخونا LuisFigo يستفيد من الحل




التاجxyx

#8 LuisFigo

LuisFigo

    عضو

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

تاريخ المشاركة 20 October 2005 - 10:57 PM

مشكورين و إن شاء الله أجرب و أرد عليكم