sql - 查询加入实验室结果
问题描述
尝试为我在 SQL Server 中工作的实验室编写查询。他们对包含两个特定测试(Test1 和 Test2)的结果的报告感兴趣。我创建了两个表,每个表有三列:
AccessionNumber, TestName, TestResult
在表 #1 中,可能有如下数据
123456, Test1, TestResult
在表 #2 中,可能有如下数据
123456, Test2, TestResult
但是可能存在两者的组合,这取决于是运行了两个测试还是只运行了一个测试。IE 可能有 Test1,但没有 Test2,反之亦然。
如何将这两个表连接在一起?匹配 AccessionNumber(这是唯一的)。理想情况下,输出将是:
AccessionNumber, Test1, Result1, Test2, Result2
如果没有匹配的测试并在相反的表中产生结果,则空值很好。
我已经尝试了从连接到交叉连接到联合的所有方法,但似乎无法克服困难。
谢谢!
解决方案
一个简单的方法是完全连接:
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
在每个表中都是唯一的——根据问题,这似乎很合理。如果可以复制,我建议您提出一个新问题以及适当的样本数据和所需的结果。
推荐阅读
- javascript - 客户端,如何信任来自物联网设备的自签名证书?
- angular - 从选择菜单中删除空白行
- android - 在 AndroidX 中膨胀 SlidingPaneLayout 类时出错
- ruby-on-rails - 将 Rails 5.2 升级到 6.0.0 后内存泄漏
- android - 如何修复 Java (android) 中的“无法找到空闲端口”错误
- python - 从 python timeit 函数保存返回值
- wordpress - 主题幻灯片错误,解析错误 wordpress
- android - 让 TalkBack 以编程方式读取按钮内容说明
- python-3.x - 将文本文件打印为两个单独的列表
- javascript - Microsoft Edge 中的 beforeunload 未触发