我有两张桌子.一份用于测试记录,一份用于测试前问卷. 我想从我的测试记录表中进行 Select ,并有一栏是"测试前问卷已完成?"它将包含是或否
调查问卷必须在进行测试前12个月内进行记录.因此,如果我在2023年1月1日做一份问卷调查,并在2023年10月1日做一次测试,结果将是"预测问卷已完成?"一栏.如果反过来,我和我在2023年1月1日做了一次测试,在2023年10月1日做了一份问卷调查,我希望结果是否定的,因为问卷没有在测试的12个月内记录下来.
这些表通过PersonID连接.
表:记录的测试
Person | Test Date |
---|---|
1111 | 01/01/2023 |
2222 | 05/01/2023 |
3333 | 10/01/2023 |
表:问卷记录
Person | Q Date |
---|---|
1111 | 10/12/2022 |
2222 | 20/05/2023 |
所需输出将为:
Person | Q Date | Q'nnaire completed in last 12months? |
---|---|---|
1111 | 10/12/2022 | Yes |
2222 | 20/05/2023 | No |
3333 | 10/01/2023 | No |
期望的输出,因为1111人在测试前完成了问卷调查,其他2人则没有.
值得注意的是,一个人可以有几份问卷和测试.
如果有人能够帮助我为SELECT中的附加列提供正确的JOIN/CASE语句,那就太好了.我try 了这么多不同的DateAdd/Datediff,但都无法实现逻辑.
谢谢
**编辑:
我正在使用SQL Server.以下是我try 过的查询:
SELECT wt.[WalkTestPK]
,wt.[PersonID]
,wt.[CompletionDate]
, case
when (Q.[Completion time]) >= dateadd(day,365,wt.[CompletionDate]) then 'yes'
else 'no'
end as [Was a questionnaire completed within 12 months prioir to this test?]
FROM [WalkTests] wt
left join Questionnaires Q on Q.[Service Number] = wt.PersonID
关于多次测试和问卷调查的一些澄清--个人被要求每年做两次测试.一份问卷应在考试前填写,有效期为12个月,因此一份问卷应涵盖两次考试.我想要做的是从我的测试表中 Select 数据并查询调查问卷表,以查看是否在测试前12个月内填写了调查问卷.
总之,如果调查问卷表中存在已在测试表中进行测试的PersonID的记录,我想知道调查问卷表中的记录是否在测试日期之前的12个月内.
希望这能帮上忙.