sql - 在一个公共列上连接三个表
问题描述
我有三个名为 Table1、Table2 和 Table3 的表。表 1 有列(mobNum bigint,visitedUS DateTime)。Table2 有列(mobNum bigint,visitedUK DateTime)。Table3 有列(mobNum bigint,visitedChina DateTime)。样本数据如下
表格1
___________________________
mobnum | visitedUS
___________________________
9000000001 | 20/10/18
___________________________
9000000001 | 11/07/19
___________________________
9000000002 | 01/02/17
___________________________
表2
mobnum | visitedUK
___________________________
9000000001 | 03/05/19
___________________________
9000000002 |10/10/18
___________________________
表3
mobnum | visitedChina
___________________________
9000000001 | 15/03/18
___________________________
现在我希望 SQL 查询显示如下结果
Result Table
-------------------------------------------------------
mobnum | visitedUS | visitedUK | visitedChina
-------------------------------------------------------
9000000001|20/10/18 | 03/05/19 | 15/03/18
-------------------------------------------------------
9000000001|11/07/19 | Null | Null
-------------------------------------------------------
9000000002|01/02/17 | 10/10/18 | Null
-------------------------------------------------------
解决方案
我没有测试或仔细检查拼写/语法:
select
isnull(t1.mobnum,isnull(t2.mobnum,t3.mobnum)) mobnum,
t1.visitedUS,
t2.visitedUK,
t3.visitedChina
from Table1 t1
full outer join Table2 t2 on t1.mobnum = t2.mobnum
full outer join Table3 t3 on t3.mobnum = isnull(t1.mobnum,t2.mobnum)
推荐阅读
- javascript - 正则表达式:查找“m:ss、mm:ss 或 hh:mm:ss”,没有“lookbehind”并拒绝子字符串和无效值
- android - Flutter navigator 应用程序可与模拟器一起使用,但不适用于真实设备
- wordpress - Wordpress 页面编辑,无法更改页面视图
- android - 如何在 Androids VpnService 中使用 DNS over HTTPS?
- excel - 如何编写 MS Excel 公式以根据 ClientName 列动态计算每个客户的“总计”
- node.js - Node.js/Express.js:TypeError:res.sendFile 需要路径参数
- javascript - 解析 npm 命令
- j2objc - 无法构建 J2ObjC
- docker - Apache Nutch 重定向错误(apache/nutch docker 映像):由于配置,重定向未处理
- regex - 捕获包含特定单词的括号内的单词