2017-03-06 98 views
0

爲了讓學生在特定科目中以「重點」畢業高中,他們必須至少完成一門專業領域定義清單中的入門課程和三門核心課程。我試圖顯示學生的學分數量,可以用來指定學生「重點」。問題是學生可以參加許多入門級別的課程,這些課程可能適用於某個專業領域,但只有其中一個課程應計入總學分。或者反之亦然,如果他們有四門核心課程,但沒有入門課程,則無法分配。以下是我的陳述。所有這一切都告訴我這是一個循環,但我明白打開遊標對性能不利,而且最有可能的是有一種't-sql'的方式。用商業邏輯學習課程學分

Select * From (Select ks.ks_id, 
    ks.student_name, 
    ks.current_grade_level, 
    cpp.title, 
    ks.bldg_id, 
    Sum(cc.credits) as 'Sum of Credits Per Expertise' , 

From #KidsSilo as ks 
    Inner Join cpp_courses as cc on cc.statecourse_id = ks.statecourse_id --- cpp_courses contains all the courses 
    Inner Join #Cpp_expertise as cpp on cc.cpp_ID = cpp.cpp_id --- cpp_expertise contains all the Expertise' and the id link to each cpp_courses 
     Where cpp.bldg_id = ks.bldg_id 
      --And cc.course_level = 'X' -- Introductory, Would a nested Select Top 1 1 work for this piece? 
      --And cc.course_level = 'C' -- Core classes 

Group by 
    ks.ks_id, 
    cpp.title, 
    ks.student_name, 
    ks.current_grade_level, 
    ks.bldg_id) as t 
Inner Join #Districts as d on d.bldg_id = t.bldg_id 
order by t.bldg_id desc 
+1

編輯您的問題,並提供樣本數據和期望的結果。你的示例代碼似乎有各種不相關的東西,如地區和建築物。 –

回答

3

如果你有一個課程表:

  • 課程編號
  • 專長
  • 水平

和具有學生在課程,那麼登記表我會期望這樣的查詢:

select e.student_id, c.expertise 
from enrollment e join 
    courses c 
    on e.course_id = c.course_id 
group by e.student_id, c.expertise 
having sum(case when level = 'introductory' then 1 else 0 end) >= 1 and 
     sum(case when level = 'core' then 1 else 0 end) >= 3; 

你的數據模型很不明確,但也許這會有所幫助。

+0

我會投票結束這個問題,因爲'有'似乎不起作用。我的設計或問題並不十分清楚。 –

+0

@christopherclark。 。 。這正是你的問題所要求的。你的數據模型不清楚,但邏輯應該非常相似。 –