需要 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
我有这个 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