需要 sql 语句将两个数据列表合并为一个公共变量

Need sql statement to join two lists of data into one with one common variable

我有这个 table 列患者 # 和不良事件:

0101      Headache  
0101      Vomiting  
0105      Pink eye 
0201      Fever  
0201      Skin Rash  
0201      Cold  
0204      Coughing 

第二个 table 列患者 # 和药物:

0101      Aspirin  
0201      Tylenol  
0201      Hydrocortisone  
0201      Midol  
0201      Benedryl  
0201      Advil  
0203      Ginkgo Biloba  
0204      Advair  
0204      Triaminic 

我想要一个 SQL 查询,它将像这样组合 2 个列表:

0101      Headache    Aspirin  
0101      Vomiting   
0105      Pink eye      
0201      Fever      Tylenol  
0201      Skin Rash  Hydrocortisone  
0201      Cold       Midol  
0201                 Benedryl  
0201                 Advil  
0203                 Ginkgo Biloba
0204      Coughing   Advair
0204                 Triaminic

基本上只是患者 # 将 2 table 的内容倾倒在一起(不良事件与药物治疗之间没有关系)

完整的外部联接将为您提供所需的结果:

SELECT * 
FROM Patients FULL OUTER JOIN Medication
     ON Patients.PatientsNumber=Medication.PatientsNumber

您的 table 定义有误。患者 # 0101 在 table 上出现两次,在 table 上只出现一次 2. 你怎么知道阿司匹林是否是治疗头痛或呕吐的正确药物?在这种情况下,加入 sugested 将为您提供两种情况下相同的药物。

简单的连接不会给你你需要的结果 row number partitioned by patient:

select nvl(t1.patient,t2.patient),t1.adverse,t2.medication
from (select patient,
             adverse, 
             row_number() over (partition by patient order by patient) rn 
      from tbl1) t1
full outer join (select patient,
             medication, 
             row_number() over (partition by patient order by patient) rn 
      from tbl2) t2
on t1.patient= t2.patient
   and t1.rn=t2.rn
   order by 1,2