الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

معالجة التكرار في البيانات

مغلق
بدأه theAviator6699 في 18 أغسطس 2007 · 1 رد · 1,801 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

ظهرت عندي مشكلة في قاعدة البيانات SQL 7 وهي تكرار القيود المحاسبية, تم علاج الكود المسؤول ولكن بقي معالجة البيانات المكررة و المدخلة سابقا.

ما اريده هو حذف الاسطر المتشابهة في القيد الواحد و الابقاء على السطر الاخير, يعني لو كان هناك أربع اسطر متشابهة يخذف ثلاثة منها.

مثال:

الرقم اسم الفاتورة ح/دائن ح/مدين القيمة

1 SIV-1 ح4 ح5 100

1 SIV-1 ح4 ح5 100

1 SIV-1 ح4 ح5 100

المطلوب وضع stored procedure او function لمعالجة هذا التكرار.

مساعدتكم محل تقديري لأني لم افلح بحلها بعد جهد ووقت كبيرين, لاني لم اقدر على ابقاء القيد الاخير بالكويري العادية, لا بد من وجود كاونتر يعد القيود قبل حذفها.

شكرا جزيلا

وتقبلوا تحياتي

#2

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

هذا مثال لحضرتك من الألف إلى الياء .. شبيه تماماً كما تريد ..

Create Table MyTable(id int , name nvarchar(50))
GO

Insert MyTable Select 1,'S'
Insert MyTable Select 1,'S'
Insert MyTable Select 1,'S'

Insert MyTable Select 2,'Q'
Insert MyTable Select 2,'Q'
Insert MyTable Select 2,'Q'
Insert MyTable Select 2,'Q'
Insert MyTable Select 2,'Q'

Insert MyTable Select 3,'A'
Insert MyTable Select 3,'A'
Insert MyTable Select 3,'A'
Insert MyTable Select 3,'A'

Insert MyTable Select 4,'V'
Insert MyTable Select 4,'V'
Insert MyTable Select 4,'V'
Insert MyTable Select 4,'V'

Insert MyTable Select 5,'aa'

Insert MyTable Select 6,'nn'

GO

سنقوم بالعملية التالية للتخلص من التكرار ..

Declare @id int , @name Nvarchar(50) , @count bigint

Declare C Cursor For 
		Select  id , name From MyTable 
		group by id, name
		having count(*) > 1

Open C
Fetch Next From C Into @id , @name

While @@fetch_Status = 0
begin

		Select @count = Count_big(*) From MyTable Where id = @id And name = @name
		Set @count = @count - 1

		Set  Rowcount @count
		Delete From MyTable Where id = @id And name = @name
		Set  Rowcount 0

		Fetch Next From C Into @id , @name
end

Close C
DeAllocate C

شوف النتائج

Select * From MyTable

بالتوفيق ..

تم تعديل هذه المشاركة بواسطة imadouzoun في 18 أغسطس 2007 في 19:41

دروس و كتب مفيدة----------------------كتيب الإجرائيات المخزنةتعرف على اللغة Transact SQL <<-->> كتيب عن تنصيب قواعد البيانات Sql Server باللغة العربية كتيب عن إنشاء قواعد البيانات في SQL Server باللغة العربية <<-->> درس مع الأمثلة عن المؤشرات و التعامل معها في الـ T-SQLالعبارات الشرطية و الحلقات في T-SQL <<-->> شرح لبعض الـ Extended Stored Procedure استخدام مكتبات الـ Dot Net الخاصة بك في الـ Sql Server 2005 <<-->> التعامل مع المصفوفات من خلال الـ T-SQLتعابير الجداول الشائعة في SQL Server 2005 <<-->>الاتصال بالأداة SQL Server Management Studioحلول سريعة و لمحات برمجية --------------------------------التصدير إلى إكسل : طريقة أولى : طريقة بسطر واحد من الكود <<-->> طريقة ثانية : طريقة تحتاج إنشاء إجرائية مخزنةً تجهيز بيانات جدول بالصيغة XML تمهيداً لحفظها كملف <<-->> تصدير البيانات إلى ملفات نصية برمجياً إغلاق جميع الإتصالات المفتوحة بقاعدة بيانات محددة .. تمهيداً لاسترجاعها أو حذفها <<-->> الاستعلام بناء على وقت مخزن بالصيغة العربية ضمن حقل نصي ..حذف السجلات المتكررة و إبقاء عدد محدد منها في جدول.. <<-->> أسرع طريقة لحذف سجلات جدول كيف احصل على اسم جهازي والباسوورد باستخدام T-SQL <<-->> حشر أنواع الصور المختلفة في حقل من نوع Image باستخدام إجرائية مخزنة .كيف تعرف أنواع الصور المخزنة في حقل من نوع Image .. <<-->> إجرائيات مخزنة ببارامترات ديناميكية مفيدة جداً للاستعلامات استخدام رقم الحقل بدلاً من الإسم في عبارات الإستعلام <<-->> من هو أضخم الجداول في قاعدة بياناتي ؟معرفة زمن تنفيذ الإجرائيات ( لتختار الطريقة الأسرع بين إجرائياتك المخزنة ) <<-->> التعامل مع الـ Rules برمجياً الحصول على آخر صف في الجدول <<-->> قراءة ملفات XML باستخدام T-SQL برمجياً (مثال مرفق)سحب بيانات ملف إكسل إلى الـ SQL Server <<-->> تشفير النسخة الاحتياطية بكلمة مرور <<-->> التخلص من البيانات المكررة <<-->> حل مشكلة التاريخ الهجريDifferential Backup بالتعريف---------- لا إله إلا الله .. محمد رسول الله

أخوكم في الله..  Imad Ozone

هذا الموضوع مغلق.

مواضيع مشابهة