2017-03-06 4 views
0

학생이 특정 과목에서 "중점"을 지닌 고등학교를 졸업하려면 해당 분야의 전문 분야 목록에 하나 이상의 입문 과정을 수료해야하며 3 개의 핵심 과목을 수강해야합니다. 나는 학생이 가지고있는 학점 수를 보여 주려고하고 있으며 학생에게 "중점"을 부여하는데 사용될 수있다. 문제는 학생이 전문 영역에 적용될 수있는 수많은 입문 레벨 수업을들을 수 있지만 그 중 하나만 총 학점에 포함되어야한다는 것입니다. 또는 4 개의 핵심 과목을 갖고 있지만 소개 수업이 없으면 할당 될 수 없습니다. 다음은 내 성명서입니다. 이것에 대한 모든 것이 그것이 루프라고 말하고 있지만 커서를 여는 것은 성능에 좋지 않으며이를 가장 잘 수행 할 수있는 '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

"have"가 효과가없는 것 같아서 나는 그 질문을 끝내기 위해 투표 할 것입니다. 그리고 나는 디자인이나 질문에서 분명하지 않았습니다. –

+0

@christopherclark. . . 이것은 귀하의 질문에 정확히 무엇을 요구합니다. 데이터 모델이 불분명하지만 논리가 매우 유사해야합니다. –

관련 문제