2016-04-26 7 views
0

Ich habe eine Umfrage in asp.net gemacht. Umfrage sind von drei Arten und enthält verschiedene Fragen. Benutzer haben die Möglichkeit, aus fünf Antworten auszuwählen:SQL Server-Abfrage für den Erhalt der Prozentsatz der Umfrage ausgewählten Antworten

strongly agree(5), 
agree(4), 
neutral(3), 
disagree(2), 
strongly disagree(1) 

Ich bekomme die Ergebnisse in der folgenden Form.

survey results in database

Ich will Ergebnisse in der folgenden Form zeigen.

enter image description here

Meine Frage ist, was die SQL-Abfrage Prozentsatz jeder gewählten Antwort von stark ist einverstanden Nicht einverstanden zu stark beginnen zu erhalten, wie in Abbildung oben gezeigt.

+1

warum in Ihrem erwarteten Ergebnis, erste und zweite Zeile den Gesamtanteil von 110% nicht zu 100% hat? Gibt es eine spezielle Anforderung? – Mark

+0

Es ist der Dummy-Prozentsatz, der dort angezeigt wird, die tatsächlichen Ergebnisse werden 100% nicht überschreiten und hängen von Benutzern ausgewählten Antworten ab. –

Antwort

0

Dies funktioniert der Trick:

select sq.QuestionId,sq.QuestionText, count(ca.AnswerOptionScore) as TotalAnswered, 

sum(case when ca.AnswerOptionScore=5 then 1 else 0 end) * 100/CONVERT(decimal(4,2), count(ca.AnswerOptionScore)) as 'StronglyAgreePercent', 

sum(case when ca.AnswerOptionScore=4 then 1 else 0 end) * 100/CONVERT(decimal(4,2), count(ca.AnswerOptionScore)) as 'AgreePercent', 

sum(case when ca.AnswerOptionScore=3 then 1 else 0 end) * 100/CONVERT(decimal(4,2), count(ca.AnswerOptionScore)) as 'NeutralPercent', 

sum(case when ca.AnswerOptionScore=2 then 1 else 0 end) * 100/CONVERT(decimal(4,2), count(ca.AnswerOptionScore)) as 'DisagreePercent', 

sum(case when ca.AnswerOptionScore=1 then 1 else 0 end) * 100/CONVERT(decimal(4,2), count(ca.AnswerOptionScore)) as 'StronglyDisagreePercent' 

from Suvey_Completed_Answers ca 

inner join Survey_Questions sq on sq.QuestionId = ca.QuestionID 
Where ca.SurveyId = 3 

group by sq.QuestionText,sq.QuestionText,sq.QuestionId