如何组合多个同质表

How to combine multiple homogenous tables

我想知道如何将以下 table 加入到一起,我有两个问题已经问了两个收集年。我想整理结果。请注意,table.

中的每个人的 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

到目前为止,我已经采用了 tables 的并集:

(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 的回复。我试过自行加入,但似乎不太对劲。

有什么想法吗?

这种情况的问题是找到存在的所有主题编号和跟进的集合。如果你知道那是什么(假设它是一个名为 subjectnumber 的 table),这是一个简单的左连接:

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

如果您没有这些主题编号 tables 之一,那么您必须使用这样的联合从您的事件 tables 中制作一个:

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