首页 > 解决方案 > 查询加入实验室结果

问题描述

尝试为我在 SQL Server 中工作的实验室编写查询。他们对包含两个特定测试(Test1 和 Test2)的结果的报告感兴趣。我创建了两个表,每个表有三列:

AccessionNumber, TestName, TestResult

在表 #1 中,可能有如下数据

123456, Test1, TestResult

在表 #2 中,可能有如下数据

123456, Test2, TestResult

但是可能存在两者的组合,这取决于是运行了两个测试还是只运行了一个测试。IE 可能有 Test1,但没有 Test2,反之亦然。

如何将这两个表连接在一起?匹配 AccessionNumber(这是唯一的)。理想情况下,输出将是:

AccessionNumber, Test1, Result1, Test2, Result2

如果没有匹配的测试并在相反的表中产生结果,则空值很好。

我已经尝试了从连接到交叉连接到联合的所有方法,但似乎无法克服困难。

谢谢!

标签: sqlsql-server

解决方案


一个简单的方法是完全连接:

select coalesce(t1.AccessionNumber, t2.AccessionNumber) as AccessionNumber,
       t1.TestName, t1.TestResult,
       t2.TestName, t2.TestResult,
from table1 t1 full join
     table2 t2
     on t1.AccessionNumber = t2.AccessionNumber;

注意:这假设AccessionNumber在每个表中都是唯一的——根据问题,这似乎很合理。如果可以复制,我建议您提出一个问题以及适当的样本数据和所需的结果。


推荐阅读