我为英语,数学和科学专业的学生进行了MCQs类型测试 学生们在OMR / OCR可读的表格上解决了他们的考试。 机器以下列方式产生了学生的反应: -
Student ID Subject Q1 Q2 Q3 Q4 ......
201 English 3 1 4 1 ......
201 Math 3 2 1 1 ....
201 Science 2 1 2 3 ....
202 English 3 1 4 1 ......
202 Math 3 2 1 1 ....
202 Science 2 1 2 3 ....
-
-
-
我如何在这些数据上应用答案密钥,例如英文我的答案密钥是:
2 2 4 1 .....
请求建议查询这种情况
答案 0 :(得分:0)
SELECT
StudentId
,CASE WHEN Q2 = ?ANSWER? then 1 ELSE 0 END
,CASE WHEN Q3 = ?ANSWER? then 1 ELSE 0 END
,CASE WHEN Q4 = ?ANSWER? then 1 ELSE 0 END
,CASE WHEN Q5 = ?ANSWER? then 1 ELSE 0 END
FROM
Table
Where subject = 'English'
可能的解决方案之一取代?答案?用你的回答键中的东西
其他方法是生成以下表格:
CREATE TABLE EnglishKey(
QuestionId int,
Answer int)
然后以这种方式插入您的值:
INSERT INTO EnglishKey VALUES (1,3),(2,4),(....)
用问题编号替换1并以正确答案回答。
然后创建一个SELECT应该很容易
答案 1 :(得分:0)
SELECT
a.StudentID
CASE WHEN a.Q1 <> a.A1 THEN 0 ELSE 1 end AS Result1,
CASE WHEN a.Q2 <> a.A2 THEN 0 ELSE 1 end AS Result2,
CASE WHEN a.Q3 <> a.A3 THEN 0 ELSE 1 end AS Result3,
CASE WHEN a.Q4 <> a.A4 THEN 0 ELSE 1 end AS Result4,
CASE WHEN a.Q5 <> a.A5 THEN 0 ELSE 1 end AS Result5,
CASE WHEN a.Q6 <> a.A6 THEN 0 ELSE 1 end AS Result6,
CASE WHEN a.Q7 <> a.A7 THEN 0 ELSE 1 end AS Result7,
CASE WHEN a.Q8 <> a.A8 THEN 0 ELSE 1 end AS Result8
FROM
StudentTable a
INNER JOIN AnswerTable b ON a.[SUBJECT] = b.[SUBJECT]
这个答案假设您在单独的表格中有答案,可以加入主题。
如果您发现写出所有案例陈述(可能有100个问题)很痛苦,您可以通过在多个列中分解语句在Microsoft Excel或开放式办公室快速构建这些查询,让它填写1 ,2,3,4s等然后复制粘贴一次快乐。