0

学生の記録を含む(一時)テーブルがあります。
どの学生がどの科目に登録したかを含む別のテーブルがあります。
以下に示すように、科目が集計された学生テーブルを更新したいと思います。

StudentID   Name    Subjects
1           Ryan    
2           James   

StudentID   Subject 
1           Maths   
1           Science 
2           History 

StudentID   Name    Subjects
1           Ryan    Maths, Science
2           James   History

これを試しましたが、最初に見つかったレコードでのみ更新されます。集約は起こりません。

declare @Subjects NVARCHAR(max) = ''

UPDATE #Students
SET Subjects = (@Subjects + CASE @Subjects WHEN '' THEN '' ELSE '; ' END + ISNULL(StudentSubjects.Subject,' '))
FROM #Students 
    INNER JOIN StudentSubjects ON #Students.StudentID = StudentSubjects.StudentID

SQL サーバー 2008 R2。
編集:
結果セットでレンダリングされるストアド プロシージャ内の一時テーブルを更新しています。実際のデータを更新していません

4

1 に答える 1

1

以下のクエリがうまくいくことを願っています

UPDATE #Students
SET Subjects = STUFF((SELECT ','+Subject From StudentSubjects b WHERE b.StudentID=a.StudentID 
For XML PATH ('')),1,1,'') 
from #Students a
于 2014-09-24T12:29:33.473 に答える