2017-09-19 7 views
-1

Comment puis-je obtenir plusieurs enregistrements d'alertes (jusqu'à 10 par élève) sur un enregistrement par élève? J'essaie d'utiliser le numéro de ligne pour numéroter les enregistrements, puis les placer dans la sortie, mais le code que j'ai écrit ne fonctionne pas en raison d'erreurs de syntaxe incorrectes sur le paramètre "where" dans l'instruction cross apply. J'ai essayé plusieurs façons d'accomplir ce dont j'ai besoin, mais je ne peux pas dépasser les erreurs. S'il vous plaît aider.Comment obtenir plusieurs enregistrements combinés à un en utilisant le numéro de ligne?

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

Est-ce lié à SQL? Si c'est le cas, apposez une étiquette appropriée. – genpfault

+0

s'il vous plaît inclure le message d'erreur exact ainsi –

Répondre

0

Vous avez plusieurs problèmes avec votre syntaxe, y compris les instructions select incomplète intégrées dans d'autres déclarations incomplètes et même sélectionner un alias d'un comparision de table avec une valeur littérale.

Je vous recommande de le découper en morceaux. Votre instruction cross apply doit pouvoir s'exécuter seule, à l'exception de la référence à la table externe.

En d'autres termes, obtenir ce travail:

(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) 

avant d'essayer de l'utiliser dans une croix appliquer.