SQL Server - możliwe rozwiązanie przestawne?
Mam dość prosty problem, który był zaskakująco trudny do zlokalizowania online. Być może szukam niewłaściwych słów kluczowych, więc chciałem się zatrzymać i zapytać was, bo wasza strona była błogosławieństwem dla moich studiów. Zobacz poniższy scenariusz:
Wybierz ucznia, policz (*) jako sumę, (nieznaną zmienną: book1, book2, book3, book4, ect ...) z tajemnic.
Zasadniczo wszystko, co chciałbym zrobić, to wylistować wszystkie książki dla unikalnego identyfikatora studenta, który pasuje do sumy. Czy ktoś mógłby wskazać mi właściwy kierunek, dobry odczyt lub cokolwiek innego, abym mógł zrobić krok we właściwym kierunku? Zakładam, że zostanie to zrobione przez lewe przyłączenie (nie wiem, jak wykonać część x1, x2, x3), a następnie po prostu połącz te dwa przez unikalny numer identyfikacyjny ucznia (bez duplikatów), ale wszyscy punkty online do przestawienia, ale pojawia się pivot aby umieścić wszystkie wiersze w kolumnach zamiast w jednej kolumnie. SQL Server 2005 to preferowana platforma.
Dzięki!
Przepraszam
Następujące zapytanie tworzy mój unikalny identyfikator (studenta) i liczbę studentów dla wszystkich zduplikowanych wpisów w tabeli:
select student, count(*) as Total
from mystudies
group by student order by total desc
część, której nie wiem, to jak utworzyć lewe złączenie na unikalnym identyfikatorze tabeli (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
Oczywiście powyższy wiersz da wyniki podobne do następujących:
Student Total BookID
000001 3 100001
000001 3 100002
000001 3 100003
000002 2 200001
000002 2 200002
000003 1 300001
Ale to, czego naprawdę chcę, to coś podobnego do następującego:
Student Total BookID
000001 3 100001, 100002, 100003
000002 2 200001, 200002
000003 1 300001
Zakładałem, że trzeba to zrobić w lewy sposób, żeby nie zmieniało rzeczywistej liczby uczniów. dzięki!