【问题标题】:Query to Join Lab Results查询加入实验室结果
【发布时间】:2020-06-27 17:05:22
【问题描述】:

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

AccessionNumber, TestName, TestResult

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

123456, Test1, TestResult

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

123456, Test2, TestResult

但是根据是运行两个测试还是只运行一个测试,可能会有两者的组合。 IE。可能有 Test1,但没有 Test2,反之亦然。

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

AccessionNumber, Test1, Result1, Test2, Result2

如果没有匹配的测试并在相反的表中产生结果,则可以使用空值。

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

谢谢!

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

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

    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 在每个表中都是唯一的——根据问题,这似乎很合理。如果可以复制,我建议您提出一个新的问题以及适当的样本数据和所需的结果。

    【讨论】:

    • 我实际上只是在测试时失去了与远程系统的连接,一旦它备份并运行就会报告回来,但要澄清的是,AccessionNumber 在每个表中都是唯一的,只有一行但是,根据入藏号,该编号可以同时出现在两个表中。
    • @Bke 。 . .那么这应该做你想要的。
    猜你喜欢
    • 2020-08-06
    • 2018-11-22
    • 1970-01-01
    • 2013-12-14
    • 2016-06-03
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多