Получить значения для одного и того же идентификатора в 1 строку, разделенную запятой в SQL Server 2008 R2
У меня есть запрос, который генерирует это
StudentID |Здание |Период |Класс
12345 2 1 11
12345 2 5 11
43210 2 1 12
Но мне нужен способ сгруппировать периоды по StudentID:
StudentID |Здание |Период | Класс
12345 2 1,5 11
43210 2 1 12
Это мой вопрос:
выберите r.student_id [StudentID],
r.building [здание],
ab.attedancePeriod [период],
r.grade [класс]
из регистра r
внутреннее соединение att_bottom ab на ab.student_id = r.student_id
где ab.building = '2'
и ab.attendance_c = 'T'
Любые предложения более чем приветствуются!
Обновление
Приведенный ниже запрос извлекает все студенческие идентификаторы, назначенные зданию 2, независимо от того, имеют ли они код посещаемости T или нет на конкретную дату (сегодняшнюю дату).
Он присваивает нулевое значение тем, которые этого не делают, когда мне просто нужны те, которые это делают (которые будут иметь точку).
select r.student_id [StudentID], r.building [Building], (select ab.attendancePeriod + ',' from att_bottom ab where ab.student_id = r.student_id and ab.building = '2' and ab.attendance_c ='T' AND CONVERT(varchar,ab.attendance_date,102) = convert(varchar,getdate(),102) FOR XML PATH ('') ) AS PERIOD, r.GRADE FROM register r
Результат
StudentID |Здание |Период |Класс
12345 2 1 , 11
43210 2 1 , 12
98775 2 НУЛЕВОЙ 10