Jag har lyckats göra en SQL-Fråga med hjälp av lite internet-guider. Såhär ser den ut:
Kod: Markera allt
declare @listcol nvarchar(max)
declare @query nvarchar(max)
select @listcol = STUFF(( Select distinct
'],[' + LTRIM(str(Subject_ID))
from Ämnen i
left join Subjects S
on i.Subject_ID=S.ID
FOR XML PATH('')
), 1, 2, '') + ']'
set @query =
'SELECT *
FROM (
SELECT Elev_ID, Subject_ID, Teacher_ID
FROM Ämnen) myTemp
PIVOT (count(Teacher_ID) FOR Subject_ID
IN (' +@listcol+')) AS pvt
order by Elev_ID'
execute (@query)
Kod: Markera allt
Elev_ID 10 13 14 15 16 2 3 4 6
0687B0C9-9454-4DE5-AF41-077EB10BCD81 0 0 1 0 0 0 0 0 0
B4BEB520-5F57-4B31-9DD4-0F580B84B752 0 0 0 0 0 0 0 0 0
8F34753E-FE45-40AD-B51A-4A5C493B494C 0 0 0 0 0 0 0 0 0
- 1. Använda mig av Left Join för att kunna presentera Subject istället för Subject_ID. I frågan ovan har jag lagt till en left join, men när jag provar att byta ut Subject_ID mot S.Subject så får jag "Error converting data type nvarchar to float."
2. I Pivotfunktionen räknar jag ju bara hur många lärare som finns för eleven, men jag vill istället presentera ett UniqueID för den första läraren som hittas för eleven. Jag har provat att byta ut count(Teacher_ID) mot Min(Cast(Teacher_ID as NVARCHAR(max))), får då error också, "Msg 102, Level 15, State 1, Line 5
Incorrect syntax near '('."
3. Sortera kolumnerna efter dess ID, har provat "ORDER BY '],[' + ltrim(str(Subject_ID))", men det påverkar ingenting alls faktiskt.