У меня достаточно простая проблема, которая была на удивление трудно найти в Интернете. Возможно, я ищу неправильные ключевые слова, поэтому я хотел остановиться и спросить вас, ребята, потому что ваш сайт был благословением в моих исследованиях. Ниже приводится сценарий: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
Я предположил, что это должно было быть сделано в левой присоединиться к так, что она не изменяет фактическое количество будучи выполненных по студенту. благодаря!
Вы должны разместить некоторые данные образца, а затем желаемые результаты. – Taryn
Похоже, вы хотите объединить все поля вместе. Это функция конкатенации агрегации строк. И, как вы это делаете, многое зависит от базы данных. Возможно, вам захочется найти эту идею, чтобы получить то, что вы хотите. –
Ваш вопрос очень повествовательный. Попробуйте перефразировать его, используя примерный набор данных, SQL, который вы пробовали до сих пор, и каков ваш ожидаемый результат. –