0
我有一個包含學生記錄的(臨時)表格。
還有另一張表,其中包含哪些學生爲哪些科目註冊。
我想更新學生表,並將主題聚合到其中,如下所示。加入表格時的SQL聚合
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 Server 2008 R2。
編輯:
我正在更新將在結果集中呈現的存儲過程內的臨時表。 不更新實際數據。
就是這樣一個壞主意,我不想告訴你如何做到這一點。您不應該在列中存儲逗號分隔列表。 – 2014-09-23 22:16:27
您不應將這些結果永久存儲在數據庫中。你可以使用這個問題的技術創建一個視圖 - http://stackoverflow.com/questions/17591490/how-to-make-a-query-with-group-concat-in-sql-server – Bulat 2014-09-23 22:21:05
可能的重複的[How使用GROUP BY連接SQL Server中的字符串?](http://stackoverflow.com/questions/273238/how-to-use-group-by-to-concatenate-strings-in-sql-server) – 2014-09-23 22:26:04