Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
| Author |
Topic |
|
rob10
Starting Member
2 Posts |
Posted - 2012-07-31 : 06:57:33
|
| Table 1 (ca. 80 studenten):userid | lastname | firstname1 | jansen | jan2 | pietersen | pietetc.de antwoorden van 120 multiple choice vragen (a t/m d) staan in table 2:answer | questionno | userida | 1 | 1c | 2 | 1b | 1 | 2etc.Nu wil ik de resultaten als volgt weergeven:lastname | firstname | vraag 1 | vraag 2 | vraag 3 |... | vraag 120jansen | jan | a | c | etc....pietersen | piet | b | etc....Weet iemand hoe ik hiervoor een select statement kan opzetten? |
|
|
Lumbago
Norsk Yak Master
3271 Posts |
Posted - 2012-07-31 : 07:08:50
|
| English my friend. But you might want to look up PIVOT: http://msdn.microsoft.com/en-us/library/ms177410(v=sql.105).aspx- LumbagoMy blog-> http://thefirstsql.com |
 |
|
|
lionofdezert
Aged Yak Warrior
885 Posts |
|
|
rob10
Starting Member
2 Posts |
Posted - 2012-07-31 : 10:27:26
|
| Dank u voor het advies. Ik ben onmiddellijk op zoek gegaan hoe een pivot en een crosstab query te maken. UIteindelijk is het gelukt! En kon ik zelfs uitrekenen hoeveel vragen er goed zijn beantwoord per student.Dit is de oplossing en helpt misschien ook iemand anders (al weet ik niet waarom ze max gebruikt hebben en moet ik het nog verder uitreiden t/m vraag 120): Hoe ik de pivot methode moest gebruiken, daar kwam ik jammer genoeg niet uit. Dat had ik ook wel willen weten.SELECT lastname, firstname,SUM(SCORE) AS AantGoed, MAX(CASE QUESTID WHEN 1 THEN QANSWER ELSE '' END) AS [Vraag 1], MAX(CASE QUESTID WHEN 2 THEN QANSWER ELSE '' END) AS [Vraag 2], MAX(CASE QUESTID WHEN 3 THEN QANSWER ELSE '' END) AS [Vraag 3], MAX(CASE QUESTID WHEN 4 THEN QANSWER ELSE '' END) AS [Vraag 4], MAX(CASE QUESTID WHEN 5 THEN QANSWER ELSE '' END) AS [Vraag 5], MAX(CASE QUESTID WHEN 6 THEN QANSWER ELSE '' END) AS [Vraag 6], MAX(CASE QUESTID WHEN 7 THEN QANSWER ELSE '' END) AS [Vraag 7], MAX(CASE QUESTID WHEN 8 THEN QANSWER ELSE '' END) AS [Vraag 8], MAX(CASE QUESTID WHEN 9 THEN QANSWER ELSE '' END) AS [Vraag 9], MAX(CASE QUESTID WHEN 10 THEN QANSWER ELSE '' END) AS [Vraag 10] FROM (SELECT u.firstname as firstname,u.lastname as lastname,A.USERID AS LOGINID, A.a_qno AS QUESTID,A.ANSWER AS QANSWER,B.trueanswer AS REALANSWER,SCORE = CASE WHEN A.ANSWER=B.trueanswer THEN 1 ELSE '' END FROM answers_exam1 A left join usersprevious u on u.userid=a.useridLEFT JOIN questionsprevious B ON A.QUESTIONID=B.QUESTIONID) AS MYTABLE GROUP BY LOGINID, lastname,firstnameorder by lastname |
 |
|
|
|
|
|
|
|