2017-09-19 11 views
-1

학생 당 하나의 기록에 여러 개의 경고 기록 (학생 당 최대 10 개)을 표시하려면 어떻게합니까? 행 번호를 사용하여 레코드에 번호를 매기고 출력에 배치하려고 시도했지만 교차 적용 문에서 "where"매개 변수의 구문 오류가 잘못되어 작성한 코드가 작동하지 않습니다. 내가 원하는 것을 성취하기 위해 여러 가지 방법을 시도했지만 오류를 지나칠 수는 없습니다. 도와주세요.행 번호를 사용하여 여러 레코드를 결합하는 방법은 무엇입니까?

select 
sd.[student_number], 
a.[health_alert], 
a.[comments], 
b.[health_alert], 
b.[comments] 

from student_enrollmentcube as se, 
    student_demographicscube as sd 

cross apply (select a.[health_alert], a.[comments], (select row_number() 
over (partition by a.[student_id] order by a.[student_id]) as r1 from 
    ar_student_health_alerts) a) where a.[student_id] = sd.[student_id] and 
    r1 = 1) 
cross apply (select b.[health_alert], b.[comments], (select row_number() 
over (partition by b.[student_id] order by b.[student_id]) as r2 from 
    ar_student_health_alerts) b) where b.[student_id] = sd.[student_id] and 
    r2 = 2) 

where se.student_id = sd.student_id and 
    se.enrollment_status= 'active' and 
    se.[current_academic_year] = 'y' 
+0

이 SQL 관련 있습니까? 그렇다면 적절하게 태그를 답니다. – genpfault

+0

정확한 오류 메시지도 함께 기재하십시오. –

답변

0

당신은 다른 불완전한 선택 제표 및 리터럴 값을 가진 테이블 별칭 심지어을 비교 한 내에 포함 된 불완전 선택 문을 포함하여 구문을 사용하여 여러 문제를 가지고있다.

이것을 조각으로 나누는 것이 좋습니다. 교차 테이블은 외부 테이블에 대한 참조를 제외하고는 독자적으로 실행할 수 있어야합니다. 당신이 십자가 적용을 그것을 사용하여 시도하기 전에

(select a.[health_alert], a.[comments], (select row_number() 
over (partition by a.[student_id] order by a.[student_id]) as r1 from 
    ar_student_health_alerts) a) where a.[student_id] = sd.[student_id] and 
    r1 = 1) 

: 즉

이 작업을 얻을.