学生の記録を含む(一時)テーブルがあります。
どの学生がどの科目に登録したかを含む別のテーブルがあります。
以下に示すように、科目が集計された学生テーブルを更新したいと思います。
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。
編集:
結果セットでレンダリングされるストアド プロシージャ内の一時テーブルを更新しています。実際のデータを更新していません。