SQL Server - возможное сводное решение?
У меня есть достаточно простая проблема, которую было удивительно трудно найти онлайн. Возможно, я ищу по неподходящим ключевым словам, поэтому я хотел бы остановиться и спросить вас, ребята, потому что ваш сайт был благословением моих исследований. Смотрите ниже сценарий:
Выберите учащегося, считайте (*) как Итого (неизвестная переменная: book1, book2, book3, book4, ect ...) из списка изучений.
По сути, все, что я хотел бы сделать, это перечислить все книги для уникального студенческого идентификатора, который соответствует общему количеству. Может ли кто-нибудь указать мне правильное направление, хорошее чтение или что-то еще, чтобы я мог сделать шаг в правильном направлении? Я предполагаю, что это будет сделано с помощью левого соединения (не знаю, как сделать часть x1, x2, x3), а затем просто свяжу их по уникальному номеру студента (без дубликатов), но все в сети указывают на сводку, но сводка появляется поместить все строки в столбцы вместо одного столбца. SQL Server 2005 является платформой выбора.
Спасибо!
сожалею
Следующий запрос дает мой уникальный идентификатор (учащегося) и количество учащегося для всех повторяющихся записей в таблице:
select student, count(*) as Total
from mystudies
group by student order by total desc
часть, которую я не знаю, состоит в том, как создать левое соединение с уникальным идентификатором таблицы (boookid)
select mystudies1.student, mystudies1.total, mystudies2.bookid
from ( select student, count(*) as Total
from mystudies
group by student
) mystudies1
left join
( select student, bookid
from mystudies
) mystudies2
on mystudies1.student=mystudies2.student
order by mystudies1.total desc, mystudies1.student asc
Очевидно, что приведенная выше строка будет давать результаты, подобные следующим:
Student Total BookID
000001 3 100001
000001 3 100002
000001 3 100003
000002 2 200001
000002 2 200002
000003 1 300001
Но на самом деле я хочу что-то похожее на следующее:
Student Total BookID
000001 3 100001, 100002, 100003
000002 2 200001, 200002
000003 1 300001
Я предположил, что это должно было быть сделано в левом соединении, чтобы это не изменило фактический счет, выполняемый на студента. Спасибо!