السلام عليكم ورحمة الله
هذا الامر يعمل بشكل جيد لايجاد مدى الدرجات المحرزة للطلاب لفترة دراسية واحدة ولكن بالعلم ان هنالك فترتين يتم ايجاد المحصلة لها جميعاً فما التعديل المناسب في هذا الامر
علماً بان هنالك Column يسمى Term_ID ,والامرالذي بين ايديكم يعمل على اساس ان هذا الحقل اما يساوي 0 او يساوي 1 ولكن عند الامر الذي اريدكم مساعدتي فيه فسيتم تجاهل تحديد الفترة الدراسية Term_ID وايجاد محصلة الدرجات لكل طالب
برجاء الاستيضاح اكثر ان لم يكن الطرح واضحاً
اما الكود فها هو
ALTER PROCEDURE [dbo].[Score_Ranges_All]
(
@Year_name int=4
-- @Subject int =0
)
AS
/* SET NOCOUNT ON */
Begin
SELECT CASE
WHEN Subject_Digree < 50 THEN 'Subject_Digree ranged in < 50'
WHEN Subject_Digree BETWEEN 50 AND 60 THEN 'Subject_Digree ranged in 50-60'
WHEN Subject_Digree BETWEEN 60 AND 70 THEN 'Subject_Digree ranged in 60-70'
WHEN Subject_Digree BETWEEN 70 AND 80 THEN 'Subject_Digree ranged in 70-80'
WHEN Subject_Digree BETWEEN 80 AND 90 THEN 'Subject_Digree ranged in 80-90'
ELSE 'Subject_Digree ranged in >=90'
END AS Subject_Digree ,
COUNT(*) AS [Total Students] ,Subject_name ,Year_name_Desc ,subject
FROM dbo.General_set where year_name = @year_name and Result_digree >=50
GROUP BY CASE
--subject = @subject and
WHEN Subject_Digree < 50 THEN 'Subject_Digree ranged in < 50'
WHEN Subject_Digree BETWEEN 50 AND 60 THEN 'Subject_Digree ranged in 50-60'
WHEN Subject_Digree BETWEEN 60 AND 70 THEN 'Subject_Digree ranged in 60-70'
WHEN Subject_Digree BETWEEN 70 AND 80 THEN 'Subject_Digree ranged in 70-80'
WHEN Subject_Digree BETWEEN 80 AND 90 THEN 'Subject_Digree ranged in 80-90'
ELSE 'Subject_Digree ranged in >=90'
END ,Subject_name ,Year_name_Desc, subject order by subject
Endجوزيتم خير