2016年3月29日 星期二

SQL 取多筆欄位合併的寫法

如需要使用到一對多的資料查詢字串,例如一個學生一學期上過那些課,將課程串成一個字串該如何寫。
請教Google大神找到一個叫做For XML Path的作法
  1. 資料表有ClassTable、SubjectNameTable、StudentTable
  2. ClassTable
    • Year-學年
    • SubjectID-科目代碼
    • StudentNumber -學號
  3. SubjectNameTable
    • SubjectID-科目代碼
    • SubjectName-科目名稱
  4. StudentTable
    • StudentNumber-學號
    • StudentName-姓名

select StudentName, 
    STUFF((select ',' + RTRIM(SubjectName) from ClassTable
        inner join SubjectNameTable 
                           on ClassTable.SubjectID = SubjectNameTable .SubjectID 
        where ClassTable.Year=104 
            and ClassTable.StudentNumber = StudentTable.StudentNumber
        for xml path('')),1,1,'') as SubjectName from StudentTable
where StudentNumber='001'

沒有留言 :

張貼留言