我有一个表格-学生表格,该表格包含具有不同问题的列,您可以对其进行过滤以从答案列中获取答案。我遇到一个问题,在controlquestion列中,我需要问2个不同的问题才能得到答案,即一行。因此,如果我问问题A,我将在列中看到答案A,问题B和答案B会被过滤掉。我想问一个问题A(注册考试的学生),列中的答案是(是),但是我也想同时问问题B(考试日期),它在答案列中为( 1/01/2019)。
问题是我问问题A,我只会返回1行数据=(是),但是我想获得他们参加其注册考试的日期(1/01/2019)。
我尝试过使用子查询-我认为这可行,但是我只是在寻找一个学生,当我试图寻找更多的学生时,这将永远需要运行,而我不得不退出执行,我认为这更多的是为了用我的代码写得不好或者子查询不是解决之道
studentform as (select * from (select sf.studentid, sf.answer
FROM studentform sf
left join cohort c on sf.studentid = c.studentid
WHERE sf.formname = 'Student Exam Profile'
and sf.controlquestion = 'Date of exam'
and sf.title = 'Humanities, Sciences and Engineering'
and sf.section = 'Student information'
and sf.state = 'done'
and sf.studentid in
( select studentid from studentform
where controlquestion = 'Has student registered for exam?'
and answer = 'Yes'
)) x)
我希望从答案列中获取日期1/01/2019,即学生写考试的日期,因为我已经问过另一个问题(学生是否注册了考试?答案中的答案?列是“是”)