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

طريقة حساب متوسط الوقت ...

بدأه tec4serv في 18 نوفمبر 2012 · 23 رد · 1,360 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اخواني الكرام ....

لدي جدول يحتوي على طلبات ،، الطلبات لها اكثر من حالة وكل حالة لها تاريخ

مثال ....

post-263213-073394400 1353229187_thumb.p

ارغب بطريقة تظهر لي متوسط الوقت ( الايام ) من ارسال الطلب ( مسجل ) إلى اكتمال الطلب ( مكتمل )

متوسط عام ،، يعني مثلاُ ( متوسط عدد الايام منذ انشاء الطلب إلى اكتماله هو : ؟؟؟ ) عام على كل الجدول وليس كل طلب لوحده

حاولت في اكثر من طريقة عن طريق SQL ولم تفلح معي

ارجو مساعدتي ولكم كل التحيه

المرفقات
Untitled.png
#2

ممكن توضح اكثر

#3

هذا الحل بـ Linq

        	var Average = (from t in
                           	from s in dc.Orders
                           	group s by s.OrderID into o
                           	select new
                               	{
                                   	OrderID = o.Key,
                                   	Total = ((TimeSpan)(
                                           	(((DateTime)(from v in o
                                                        	where v.Status == "مكتمل"
                                                        	select v.Date).Min())) -
                                           	(((DateTime)(from v in o
                                                        	where v.Status == "مسجل"
                                                        	select v.Date).Min())))).Days,
                               	}
                       	select t.Total).Average();

و للبيانات في مثالك ظهر لدي الجواب 3

تم تعديل هذه المشاركة بواسطة أبو أحمد المبرمج في 18 نوفمبر 2012 في 21:50

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

#4

شكرا لتوضيح الاخ ابو احمد ولكن اعتقد ان هذا الكود اسرع

select  avg(t.nDays) as nAverage
from
	(select id,DATEDIFF(day, min(dDate), max(dDate)) as nDays
	from Orders
	where Status in("مكتمل","مسجل")
	group by id) as t
2
#5

أكرمك الله أخي كريم

بصراحة أنا لم أجرب SQL وإنما اجتهدت بال Linq و التحويلات لأني جعلت حقل Date من النوع Date

قمت بتجربة حلك فلم ينجح بالبداية وكان يظهر لي خطأ ربما لأن أنواع الحقول التي وضعتها مختلفة عن الأنواع لدى الجدول في مثالك

ولكن بعد تعديل بسيط نجح الحل والحمد لله

SELECT AVG(nDays) AS nAverage
FROM   (SELECT OrderID, DATEDIFF(day, MIN(Date), MAX(Date)) AS nDays
    	FROM   dbo.Orders
    	WHERE  (N'مسجل', N'مكتمل')
    	GROUP  BY OrderID) AS t

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

تم تعديل هذه المشاركة بواسطة أبو أحمد المبرمج في 19 نوفمبر 2012 في 04:40

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

#6
أبو أحمد المبرمج كتب:

هذا الحل بـ Linq

        	var Average = (from t in
                           	from s in dc.Orders
                           	group s by s.OrderID into o
                           	select new
                               	{
                                   	OrderID = o.Key,
                                   	Total = ((TimeSpan)(
                                           	(((DateTime)(from v in o
                                                        	where v.Status == "مكتمل"
                                                        	select v.Date).Min())) -
                                           	(((DateTime)(from v in o
                                                        	where v.Status == "مسجل"
                                                        	select v.Date).Min())))).Days,
                               	}
                       	select t.Total).Average();

و للبيانات في مثالك ظهر لدي الجواب 3

جزاك الله خير ،، حاولت فهم الكود البرمجي ولم افلح قي ذالك لقل خبرتي

KARIMSOFT كتب:

شكرا لتوضيح الاخ ابو احمد ولكن اعتقد ان هذا الكود اسرع

select  avg(t.nDays) as nAverage
from
	(select id,DATEDIFF(day, min(dDate), max(dDate)) as nDays
	from Orders
	where Status in("مكتمل","مسجل")
	group by id) as t

دائماً سباق في مساعدة اخوتك ،، الله يجزاك الخير وبيض الله وجهك يوم تسوود وجوه وتبيض وجوه

الكود يعمل ولكن يظهر لي الناتج 0 ،، معنى ذالك ان اغلب الطلبات يتم تعميدها بنفس اليوم ؟

وكيف لي ان اظهر عدد مثلاً 1 يوم اذا كان العدد 0 ؟

حسب ردك السابق ،، سأقوم بشرح بسيط للفكره التي ارغبها ..

ارغب ان يظهر لي متوسط الايام التي يتم فيها تعميد الطلبات من ان يسجل الطلب العميل إلى ان يتم اكتماله

هل الحل الذي تفضلت بوضعه هو المطلوب ؟

أبو أحمد المبرمج كتب:

أكرمك الله أخي كريم

بصراحة أنا لم أجرب SQL وإنما اجتهدت بال Linq و التحويلات لأني جعلت حقل Date من النوع Date

قمت بتجربة حلك فلم ينجح بالبداية وكان يظهر لي خطأ ربما لأن أنواع الحقول التي وضعتها مختلفة عن الأنواع لدى الجدول في مثالك

ولكن بعد تعديل بسيط نجح الحل والحمد لله

SELECT AVG(nDays) AS nAverage
FROM   (SELECT OrderID, DATEDIFF(day, MIN(Date), MAX(Date)) AS nDays
    	FROM   dbo.Orders
    	WHERE  (N'مسجل', N'مكتمل')
    	GROUP  BY OrderID) AS t

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

جزاك الله كل خير ،، حاولت ان اجرب الكود ولكن يبدو ان به نواقص

#7

استاذي KARIMSOFT

لدي استفسار اتوقع انه اصعب استفسار :D

من طبعي فتح موضوع جديد للاستفسارات حتى يكون مرجع للجميع وخاصة المبتدئين امثالي ...

ولكن حتى لا اكثر عليك المواضيع ،، سأضع الاستفسار هنا ....

لدي نظام اضافة طلبات ،، وكل طلب له رقم طلب وتحت رقم الطلب توجد الطلبات .. ممكن يكون الشخص لديه 3 طلبات او 4 او مجرد طلب او طلبين ...

0 = طلب مرفوض

1 = طلب مقبول

مثال ...

post-263213-049286700 1353308666_thumb.p

الملطوب ،، كيف اسوي إحصائية كامله بعدد الطلبات ( المقبوله بالكامل ،، المرفوضه بالكامل ،، المقبولة جزئياً ) يعني الطلبات المرفوض بالكامل التي جميع حالاتها 0 ، الطلبات المقبولة بالكامل التي جميع حالاتها 1 ،، والطلبات المقبولة جزئياً التي حالاتها بين 0 و 1 ...

يعني اللذي يظهر للمستخدم في النهاية يكون مجموع عدد الطلبات للمقبولة بالكامل والمرفوضه بالكامل والمقبولة جزئياً ...

اتمنى تفيدنا والله يزيدك من علمه يارب

المرفقات
Untitled.png

تم تعديل هذه المشاركة بواسطة tec4serv في 19 نوفمبر 2012 في 10:08

#8

بارك الله بكم إخواني

أتوقع اللبس الذي حصل هو أني أطبق الاستفسار في SQL Server Management Studio 2012 و أنتم تطبقونه في الكود

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

#9

مشكله نفس اليوم

select  avg(t.nDays) as nAverage
from
    	(select ID_Number,isnull(nullif(DATEDIFF(day, min(dDate), max(dDate)),0),1) as nDays
    	from reg
    	where state in(1,5)
    	group by ID_Number) as t
#10
KARIMSOFT كتب:

مشكله نفس اليوم

select  avg(t.nDays) as nAverage
from
    	(select ID_Number,isnull(nullif(DATEDIFF(day, min(dDate), max(dDate)),0),1) as nDays
    	from reg
    	where state in(1,5)
    	group by ID_Number) as t

اشكرك والله يعطيك العافيه ،،

وباقي الاستفسار الصعب استاذ كريم ؟

#11

حل المشكله الثانية جرب هذا الكود

SELECT
	sum(SomeOrderAccepter) as 'الطلبات المقبولة جزئياً' ,
	sum(AllOrderAccepter) as 'الطلبات المقبولة بالكامل' ,
	sum(AllOrderReject) as 'الطلبات المرفوض بالكامل' 
from(SELECT
			case when  COUNT(ID_Number)>1 then  sum(nOrderCount) else Null end as 'SomeOrderAccepter' ,
			case when  COUNT(ID_Number)=1 and max(Group_ID)=1 then  sum(nOrderCount) else NULL end as 'AllOrderAccepter' ,
			case when  COUNT(ID_Number)=1 and max(Group_ID)=0 then  sum(nOrderCount) else NULL end as 'AllOrderReject' 
		from(SELECT 	ID_Number, Group_ID, COUNT(Group_ID) AS nOrderCount
			FROM     	Reg
			GROUP BY ID_Number, Group_ID
		 	)AS T1	
		GROUP BY ID_Number	) as T2

لا تطلب شرح حاول فهمه

هو 3 SELECT الاولي من الداخل تاتي بمجموع كل طلب في نفس الحال

الثانية توم بعمل الشرط لمعرف نوع الطلب

الثالث تقوم بجمع الانواع

2
#12
KARIMSOFT كتب:

حل المشكله الثانية جرب هذا الكود

SELECT
	sum(SomeOrderAccepter) as 'الطلبات المقبولة جزئياً' ,
	sum(AllOrderAccepter) as 'الطلبات المقبولة بالكامل' ,
	sum(AllOrderReject) as 'الطلبات المرفوض بالكامل' 
from(SELECT
			case when  COUNT(ID_Number)>1 then  sum(nOrderCount) else Null end as 'SomeOrderAccepter' ,
			case when  COUNT(ID_Number)=1 and max(Group_ID)=1 then  sum(nOrderCount) else NULL end as 'AllOrderAccepter' ,
			case when  COUNT(ID_Number)=1 and max(Group_ID)=0 then  sum(nOrderCount) else NULL end as 'AllOrderReject' 
		from(SELECT 	ID_Number, Group_ID, COUNT(Group_ID) AS nOrderCount
			FROM     	Reg
			GROUP BY ID_Number, Group_ID
		 	)AS T1	
		GROUP BY ID_Number	) as T2

لا تطلب شرح حاول فهمه

هو 3 SELECT الاولي من الداخل تاتي بمجموع كل طلب في نفس الحال

الثانية توم بعمل الشرط لمعرف نوع الطلب

الثالث تقوم بجمع الانواع

الله يعطيك العافيه استاذ كريم ،، طوال يوم امس وانا احاول اربط الكود بجدولين لهم نفس الاعمده ولم افلح للاسف

لان هي عباره عن جدولين في الحقيقه ،، جدول اضافة مواد وجدول حذف وتعديل مواد وجميعها مربوطه برقم ID واللذي مربوط برقم Req

هذا هو الكود بعد التعديل على اسماء الحقول

SELECT
SUM(SomeOrderAccepter) AS 'عدد النماذج المقبولة جزئياً' ,
SUM(AllOrderAccepter) AS 'عدد النماذج المقبولة بالكامل' ,
SUM(AllOrderReject) AS 'عدد النماذج المرفوضة بالكامل'
from
( SELECT
case when  COUNT(T1.Req_ID)>1 then  SUM(T1.nOrderCount) else Null end as 'SomeOrderAccepter' ,
case when  COUNT(T1.Req_ID)=1 and MAX(CAST(T1.Course_Added AS INT))=1 then  SUM(T1.nOrderCount) else NULL end as 'AllOrderAccepter' ,
case when  COUNT(T1.Req_ID)=1 and MAX(CAST(T1.Course_Added AS INT))=0 then  SUM(T1.nOrderCount) else NULL end as 'AllOrderReject'
from 
( SELECT Req_ID, Course_Added, COUNT(Course_Added) AS nOrderCount
FROM CourseAdded
GROUP BY Req_ID, Course_Added
)AS T1
GROUP BY T1.Req_ID
) AS T2

الاستاذ كريم ،، اذا كان لدينا الجدول CourseAdded والجدول ChangeCourses والجدولين لهم نفس الحقول كـ الاتي

الجدول : CourseAdded

الحقول : ID و Req_ID و Course_Added

الجدول : ChangeCourses

الحقول : ID و Req_ID و Course_Change

مع العلم ان ليس كل طالب لديه اضافه ولديه حذف او تعديل ،، ممكن يكون لديه فقط اضافه او فقط تعديل او حذف

كيف يمكنني ان اربط بينهم وتطبيق نفس القاعدة السابقه عليها ؟

تم تعديل هذه المشاركة بواسطة tec4serv في 21 نوفمبر 2012 في 08:14

#13

جرب هذا الكود

SELECT
SUM(SomeOrderAccepter) AS 'عدد النماذج المقبولة جزئياً' ,
SUM(AllOrderAccepter) AS 'عدد النماذج المقبولة بالكامل' ,
SUM(AllOrderReject) AS 'عدد النماذج المرفوضة بالكامل'
from
( SELECT
case when  COUNT(T1.Req_ID)>1 then  SUM(T1.nOrderCount) else Null end as 'SomeOrderAccepter' ,
case when  COUNT(T1.Req_ID)=1 and MAX(CAST(T1.Course_Added AS INT))=1 then  SUM(T1.nOrderCount) else NULL end as 'AllOrderAccepter' ,
case when  COUNT(T1.Req_ID)=1 and MAX(CAST(T1.Course_Added AS INT))=0 then  SUM(T1.nOrderCount) else NULL end as 'AllOrderReject'
from 
( SELECT Req_ID, Course_Added, COUNT(Course_Added) AS nOrderCount
FROM CourseAdded
GROUP BY Req_ID, Course_Added

UNION ALL

SELECT Req_ID, Course_Change, COUNT(Course_Change) AS nOrderCount
FROM ChangeCourses 
GROUP BY Req_ID, Course_Change

)AS T1
GROUP BY T1.Req_ID
) AS T2
#14
KARIMSOFT كتب:

جرب هذا الكود

SELECT
SUM(SomeOrderAccepter) AS 'عدد النماذج المقبولة جزئياً' ,
SUM(AllOrderAccepter) AS 'عدد النماذج المقبولة بالكامل' ,
SUM(AllOrderReject) AS 'عدد النماذج المرفوضة بالكامل'
from
( SELECT
case when  COUNT(T1.Req_ID)>1 then  SUM(T1.nOrderCount) else Null end as 'SomeOrderAccepter' ,
case when  COUNT(T1.Req_ID)=1 and MAX(CAST(T1.Course_Added AS INT))=1 then  SUM(T1.nOrderCount) else NULL end as 'AllOrderAccepter' ,
case when  COUNT(T1.Req_ID)=1 and MAX(CAST(T1.Course_Added AS INT))=0 then  SUM(T1.nOrderCount) else NULL end as 'AllOrderReject'
from 
( SELECT Req_ID, Course_Added, COUNT(Course_Added) AS nOrderCount
FROM CourseAdded
GROUP BY Req_ID, Course_Added

UNION ALL

SELECT Req_ID, Course_Change, COUNT(Course_Change) AS nOrderCount
FROM ChangeCourses 
GROUP BY Req_ID, Course_Change

)AS T1
GROUP BY T1.Req_ID
) AS T2

السلام عليكم

جزاك الله خير على مساعدتك لي

جربت الكود ،، المشكلة ان عدد النتائج يصبح اكثر من عدد الطلبات الكليه في النظام

يعني طلعت لي هذه النتائج

عدد النماذج المقبولة جزئياً 1675

عدد النماذج المقبولة بالكامل 855

عدد النماذج المرفوضة كلياً 830

وعدد النماذج الكليه في النظام هي 1400

هل تتوقع ان هناك مشكلة ما في الكود ؟

#15

جرب هذا

SELECT
SUM(SomeOrderAccepter) AS 'عدد النماذج المقبولة جزئياً' ,
SUM(AllOrderAccepter) AS 'عدد النماذج المقبولة بالكامل' ,
SUM(AllOrderReject) AS 'عدد النماذج المرفوضة بالكامل'
from
( SELECT
case when  COUNT(T1.Req_ID)>1 then  SUM(T1.nOrderCount) else Null end as 'SomeOrderAccepter' ,
case when  COUNT(T1.Req_ID)=1 and MAX(CAST(T1.Course_Added AS INT))=1 then  SUM(T1.nOrderCount) else NULL end as 'AllOrderAccepter' ,
case when  COUNT(T1.Req_ID)=1 and MAX(CAST(T1.Course_Added AS INT))=0 then  SUM(T1.nOrderCount) else NULL end as 'AllOrderReject'
from 
(
SELECT Req_ID, Course_Added, COUNT(Course_Added) AS nOrderCount
from 
(

SELECT Req_ID, Course_Added, Course_Added
FROM CourseAdded

UNION ALL

SELECT Req_ID, Course_Change, Course_Change
FROM ChangeCourses ) AS T0
GROUP BY Req_ID, Course_Change

)AS T1
GROUP BY T1.Req_ID
) AS T2
#16
KARIMSOFT كتب:

جرب هذا

SELECT
SUM(SomeOrderAccepter) AS 'عدد النماذج المقبولة جزئياً' ,
SUM(AllOrderAccepter) AS 'عدد النماذج المقبولة بالكامل' ,
SUM(AllOrderReject) AS 'عدد النماذج المرفوضة بالكامل'
from
( SELECT
case when  COUNT(T1.Req_ID)>1 then  SUM(T1.nOrderCount) else Null end as 'SomeOrderAccepter' ,
case when  COUNT(T1.Req_ID)=1 and MAX(CAST(T1.Course_Added AS INT))=1 then  SUM(T1.nOrderCount) else NULL end as 'AllOrderAccepter' ,
case when  COUNT(T1.Req_ID)=1 and MAX(CAST(T1.Course_Added AS INT))=0 then  SUM(T1.nOrderCount) else NULL end as 'AllOrderReject'
from 
(
SELECT Req_ID, Course_Added, COUNT(Course_Added) AS nOrderCount
from 
(

SELECT Req_ID, Course_Added, Course_Added
FROM CourseAdded

UNION ALL

SELECT Req_ID, Course_Change, Course_Change
FROM ChangeCourses ) AS T0
GROUP BY Req_ID, Course_Change

)AS T1
GROUP BY T1.Req_ID
) AS T2

اسف على التاخر بالرد استاذ كريم

طبقت الكود ولكن لا يعمل وتظهر لي هذه المشكلة

Msg 8156, Level 16, State 1, Line 24
The column 'Course_Added' was specified multiple times for 'T0'.
Msg 207, Level 16, State 1, Line 24
Invalid column name 'Course_Change'.
#17

جرب هذا

SELECT
SUM(SomeOrderAccepter) AS 'عدد النماذج المقبولة جزئياً' ,
SUM(AllOrderAccepter) AS 'عدد النماذج المقبولة بالكامل' ,
SUM(AllOrderReject) AS 'عدد النماذج المرفوضة بالكامل'
from
( SELECT
case when  COUNT(T1.Req_ID)>1 then  SUM(T1.nOrderCount) else Null end as 'SomeOrderAccepter' ,
case when  COUNT(T1.Req_ID)=1 and MAX(CAST(T1.Course_Added AS INT))=1 then  SUM(T1.nOrderCount) else NULL end as 'AllOrderAccepter' ,
case when  COUNT(T1.Req_ID)=1 and MAX(CAST(T1.Course_Added AS INT))=0 then  SUM(T1.nOrderCount) else NULL end as 'AllOrderReject'
from 
(
SELECT Req_ID, Course_Added, COUNT(Course_Added) AS nOrderCount
from 
(

SELECT ID , Req_ID , Course_Added
FROM CourseAdded

UNION ALL

SELECT ID , Req_ID , Course_Change as 'Course_Added'
FROM ChangeCourses ) AS T0
GROUP BY Req_ID, Course_Change

)AS T1
GROUP BY T1.Req_ID
) AS T2
#18
KARIMSOFT كتب:

جرب هذا

SELECT
SUM(SomeOrderAccepter) AS 'عدد النماذج المقبولة جزئياً' ,
SUM(AllOrderAccepter) AS 'عدد النماذج المقبولة بالكامل' ,
SUM(AllOrderReject) AS 'عدد النماذج المرفوضة بالكامل'
from
( SELECT
case when  COUNT(T1.Req_ID)>1 then  SUM(T1.nOrderCount) else Null end as 'SomeOrderAccepter' ,
case when  COUNT(T1.Req_ID)=1 and MAX(CAST(T1.Course_Added AS INT))=1 then  SUM(T1.nOrderCount) else NULL end as 'AllOrderAccepter' ,
case when  COUNT(T1.Req_ID)=1 and MAX(CAST(T1.Course_Added AS INT))=0 then  SUM(T1.nOrderCount) else NULL end as 'AllOrderReject'
from 
(
SELECT Req_ID, Course_Added, COUNT(Course_Added) AS nOrderCount
from 
(

SELECT ID , Req_ID , Course_Added
FROM CourseAdded

UNION ALL

SELECT ID , Req_ID , Course_Change as 'Course_Added'
FROM ChangeCourses ) AS T0
GROUP BY Req_ID, Course_Change

)AS T1
GROUP BY T1.Req_ID
) AS T2

السلام عليكم

المشكلة في هذا السطر

GROUP BY Req_ID, Course_Change

يظهر

Msg 207, Level 16, State 1, Line 24

Invalid column name 'Course_Change'.

#19

السلام عليكم أخي

يشرفني تقديم المساعدة لك أرى ان المشكلة هي كما هو واضح عدم وجود عمود باسم Course_Change قم بالتأكد من تهجئة اسم العمود تماما

وأقدم الشكر لأخي

KARIMSOFT

على هذا المجهود الرائع

#20
عبد الملك بكار كتب:

السلام عليكم أخي

يشرفني تقديم المساعدة لك أرى ان المشكلة هي كما هو واضح عدم وجود عمود باسم Course_Change قم بالتأكد من تهجئة اسم العمود تماما

وأقدم الشكر لأخي

KARIMSOFT

على هذا المجهود الرائع

اشكر مجهودك الدائم

الله يعافيك

العمود متأكد منه ،، ولكن يبدو ان فيه مشكلة في الكود

#21

شكرا للاخ عبد الملك بكاراكرمك الله

#22

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

SELECT
SUM(SomeOrderAccepter) AS 'عدد النماذج المقبولة جزئياً' ,
SUM(AllOrderAccepter) AS 'عدد النماذج المقبولة بالكامل' ,
SUM(AllOrderReject) AS 'عدد النماذج المرفوضة بالكامل'
from
( SELECT
case when  COUNT(T1.Req_ID)>1 then  SUM(T1.nOrderCount) else Null end as 'SomeOrderAccepter' ,
case when  COUNT(T1.Req_ID)=1 and MAX(CAST(T1.Course_Added AS INT))=1 then  SUM(T1.nOrderCount) else NULL end as 'AllOrderAccepter' ,
case when  COUNT(T1.Req_ID)=1 and MAX(CAST(T1.Course_Added AS INT))=0 then  SUM(T1.nOrderCount) else NULL end as 'AllOrderReject'
from 
(
SELECT Req_ID, Course_Added, COUNT(Course_Added) AS nOrderCount
from 
(

SELECT ID , Req_ID , Course_Added
FROM CourseAdded

UNION ALL

SELECT ID , Req_ID , Course_Change as 'Course_Added'
FROM ChangeCourses ) AS T0
GROUP BY Req_ID, Course_Added

)AS T1
GROUP BY T1.Req_ID
) AS T2
#23
KARIMSOFT كتب:

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

SELECT
SUM(SomeOrderAccepter) AS 'عدد النماذج المقبولة جزئياً' ,
SUM(AllOrderAccepter) AS 'عدد النماذج المقبولة بالكامل' ,
SUM(AllOrderReject) AS 'عدد النماذج المرفوضة بالكامل'
from
( SELECT
case when  COUNT(T1.Req_ID)>1 then  SUM(T1.nOrderCount) else Null end as 'SomeOrderAccepter' ,
case when  COUNT(T1.Req_ID)=1 and MAX(CAST(T1.Course_Added AS INT))=1 then  SUM(T1.nOrderCount) else NULL end as 'AllOrderAccepter' ,
case when  COUNT(T1.Req_ID)=1 and MAX(CAST(T1.Course_Added AS INT))=0 then  SUM(T1.nOrderCount) else NULL end as 'AllOrderReject'
from 
(
SELECT Req_ID, Course_Added, COUNT(Course_Added) AS nOrderCount
from 
(

SELECT ID , Req_ID , Course_Added
FROM CourseAdded

UNION ALL

SELECT ID , Req_ID , Course_Change as 'Course_Added'
FROM ChangeCourses ) AS T0
GROUP BY Req_ID, Course_Added

)AS T1
GROUP BY T1.Req_ID
) AS T2

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

الكود يعمل بشكل ممتاز

لا حرمك الله الاجر

#24

اكرمك الله براية وجه الكريم

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