الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

استعلام لتجميع القيم حسب السنوات

Featured Replies

بتاريخ:

السلام عليكم..
عندي جدول يحتوي السنوات ومجموع العملاء كالتالي

YEAR                           CLIENTS
---------                         --------------
2003                                1000
2004                                 500
2005                                 250

هذا الجدول يعبر عن أعداد العملاء المسجلين خلال كل عام
والمطلوب هو جملة سيليكت تقوم بتجميع أعداد العملاء للسنوات السابقة كالتالي :

YEAR                       CLIENTS
---------                     -------------
2003                         1000
2004                          1500
2005                          1750

أي أن يقوم بتجميع عدد العملاء للسنة الحالية مع العملاء القدامى

ولكم جزيل الشكر.



بتاريخ:

السلام عليكم ورحمة الله وبركاته بمعلوماتي البسيطة أنا أعتقد أن كتابة SQL لمعالجة هذه المعضلة ليس بالإمكان. وأضعف الإيمان هذا الكود التالي

declare
cursor c is select * from sum_clients
order by 1;
rec c%rowtype;
i number:=0;
tot number:=0;
begin
open c;
loop
fetch c into rec;
if c%notfound then exit; end if;
i:=i+1;
if i=1 then
tot:=rec.clients;
dbms_output.put_line('Year'||' '||'Clients');
dbms_output.put_line('----'||' '||'------');
else
tot:=tot+rec.clients;
end if;
dbms_output.put_line(rec.year||' '||tot);
end loop;
close c;
end;
/

أو إستخدام Case ولكنني أجهله ونظرا لأنك تريد أن تذهب من خلال امر ال Select إلي الوراء فلا يمكن هذا إلا بعمل Cursor أو عمل مقداح أو زناد Trigger علي مستوي هذا الجدول بمجرد الإنتقال من سنة إلي سنة بتجميع السنوات الماضية وإدخال القيم إلي جدول آخر أو أن تعمله أثناء عمل الربورت لأنه في حد ذاته يعمل عمل ال Cursor
وجزاكم الله خيرا
أخوك / شبيكه ربيع

تم تعديل بواسطة Shibeika

بتاريخ:

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

اليك الحل للسؤال الذي طرحته و هو مخصص لجدول محدد و ثابت القيم


select year, case year when 2003 then client
when 2004 then ( select sum(client) from clint where year in(2003,2004))
when 2005 then ( select sum(client) from clint where year in(2003,2004,2005))
else client
end "Increment Client "
from clint;


نسال الله التوفيق
و السلبام عليكم
بتاريخ:

this is again:

-------------------------------------------------------------------------------------------------------------
select year, case year when 2003 then client
when 2004 then ( select sum(client) from clint where year in(2003,2004))
when 2005 then ( select sum(client) from clint where year in(2003,2004,2005))
else client
end "Increment Client "
from clint;
------------------------------------------------------------------------------------------------------------
bye

بتاريخ:
  • كاتب الموضوع

السلام عليكم...
شكرا للإخوة على الردود المتميزة....
بالنسبة للسؤال الذي طرحته مسبقا فإنني كنت أريد الحل عن طريق جملة سيليكت وليس كيرسر حتى أتمكن من استخدامها ك INLINE VIEW.
لقد استطعت أن أكتب جملة السيليكت و هذا هو الحل لتعم الفائدة للجميع و شكرا مرة أخرى على جهودكم الطيبة.

SELECT  R.CLT_YEAR,
                SUM(R.CLT) OVER (ORDER BY R.CLT_YEAR RANGE UNBOUNDED PRECEDING) ACCUMULATED_SUM

FROM
         (SELECT  TO_CHAR(CLT_CRT_DATE,'RRRR') CLT_YEAR,
                           COUNT(*) CLT
          FROM      CLIENTS
          GROUP BY TO_CHAR(CLT_CRT_DATE,'RRRR')) R

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

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

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

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

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

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.