我想知道我将如何一起加入以下表格,我在两个收集年份中提出了两个问题。我想整理结果。请注意,followUp对于表中的每个人都是不变的。
Q1YR1
SubjectNo FollowUp Response
1 1 Yes
2 1 No
Q2YR1
SubjectNo FollowUp Response
1 1 No
2 1 Yes
Q2YR2
SubjectNo FollowUp Response
1 2 Yes
2 2 Yes
Q2YR2
SubjectNo FollowUp Response
1 2 No
2 2 No
我试图了解以下内容:
SubjectNo FollowUp Q1YR1 Q2YR1 Q1YR2 Q2YR2
1 1 Yes No
1 2 Yes No
2 1 No Yes
2 2 Yes No
到目前为止,我已经采用了表格的结合:
(SELECT subjectno_0 AS SubjectNo, aiw_0 AS Age, followup_0 AS FollowUp, dataresponse_0 AS Q1YR1, NULL AS Q2YR1, NULL AS Q1YR2, NULL AS Q2YR2 FROM question1yr1)
UNION ALL
(SELECT subjectno_0 AS SubjectNo, aiw_0 AS Age, followup_0 AS FollowUp, NULL AS Q1YR1, dataresponse_0 AS Q2YR1, NULL AS Q1YR2, NULL AS Q2YR2 FROM question2yr1)
UNION ALL
(SELECT subjectno_0 AS SubjectNo, aiw_0 AS Age, followup_0 AS FollowUp, NULL AS Q1YR1, NULL AS Q2YR1, dataresponse_0 AS Q1YR2, NULL AS Q2YR2 FROM question1yr2)
UNION ALL
(SELECT subjectno_0 AS SubjectNo, aiw_0 AS Age, followup_0 AS FollowUp, NULL AS Q1YR1, NULL AS Q2YR1, NULL AS Q1YR2, dataresponse_0 AS Q2YR2 FROM question2yr2)
这让我走了一半,但显然没有加入SubjectNo和FollowUp的回复。我尝试过自我加入,但我似乎无法做到这一点。
有什么想法吗?
答案 0 :(得分:0)
这种情况的问题是找到所有主题编号和存在的后续内容的集合。如果您知道那是什么(假设它是一个名为subjectnumber的表),这是一个简单的左连接:
SELECT SN.SubjectNo, SN.FollowUp,
Q1YR1.Response AS Q1YR1,
Q2YR1.Response AS Q2YR1,
Q1YR2.Response AS Q1YR2,
Q2YR2.Response AS Q2YR2
FROM SubjectNumber SN
LEFT JOIN Q1YR1 ON SN.SubjectNo = Q1YR1.SubjectNo AND SN.FollowUp = Q1YR1.FollowUp
LEFT JOIN Q2YR1 ON SN.SubjectNo = Q2YR1.SubjectNo AND SN.FollowUp = Q2YR1.FollowUp
LEFT JOIN Q1YR2 ON SN.SubjectNo = Q1YR2.SubjectNo AND SN.FollowUp = Q1YR2.FollowUp
LEFT JOIN Q2YR2 ON SN.SubjectNo = Q2YR2.SubjectNo AND SN.FollowUp = Q2YR2.FollowUp
如果您没有这些主题编号表中的一个,那么您必须使用这样的联合从事件表中创建一个:
SELECT SN.SubjectNo, SN.FollowUp,
Q1YR1.Response AS Q1YR1,
Q2YR1.Response AS Q2YR1,
Q1YR2.Response AS Q1YR2,
Q2YR2.Response AS Q2YR2
FROM (
SELECT SubjectNo, FollowUp FROM Q1R1 UNION
SELECT SubjectNo, FollowUp FROM Q2R1 UNION
SELECT SubjectNo, FollowUp FROM Q1R2 UNION
SELECT SubjectNo, FollowUp FROM Q2R2
) SN
LEFT JOIN Q1YR1 ON SN.SubjectNo = Q1YR1.SubjectNo AND SN.FollowUp = Q1YR1.FollowUp
LEFT JOIN Q2YR1 ON SN.SubjectNo = Q2YR1.SubjectNo AND SN.FollowUp = Q2YR1.FollowUp
LEFT JOIN Q1YR2 ON SN.SubjectNo = Q1YR2.SubjectNo AND SN.FollowUp = Q1YR2.FollowUp
LEFT JOIN Q2YR2 ON SN.SubjectNo = Q2YR2.SubjectNo AND SN.FollowUp = Q2YR2.FollowUp