如何组合多个同质表
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
我想知道如何将以下 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