sql - SQL JOINS 与 excel vlook up 类似,但有条件
问题描述
我正在尝试在 SQL 中创建 2 个表以形成第三个表。示例和预期输出如下
表格1
Date CHI HOS
1/1/1 1 a
1/1/1 2 b
2/1/1 1 a
3/1/1 3 c
表2
Date CHI CRN
1/1/1 2 b
1/1/1 1 a
2/1/1 2 b
3/1/1 3 d
表 1 _new
Date CHI HOS Hosp_new
1/1/1 1 a a
1/1/1 2 b b
2/1/1 1 a a
3/1/1 3 c d
条件是,
- 唯一的关键
CHI
是 table1.Hos = table2.CRN
那么在哪里table1.HOS
table1.HOS <> table2.CRN
那么在哪里table2.CRN
table2
那么在哪里找不到 table1 CHI 中的 vlook up 列table1.HOS
- 创建一个新列
HOSP_new
并填充以上内容 - 它是一个 1200 万行的文件,我不想有重复的行
解决方案
你可以试试这个:
select distinct t1.date, t1.chi, t1.hos,
case when t1.hos != t2.hos then t2.hos
else t1.hos end as Hosp_new
from table1 t1
left join table2 t2 on t1.chi = t2.chi and t2.date = t1.date
推荐阅读
- angular - Angular 8在完成多个后续请求时订阅,如何?
- java - 为什么在循环中使用“str.charAt(i) = str.charAt(i+1)”时会出错
- c# - 如何按月对数据表进行分组并计算该月以下的行数
- json - 读取外部 JSON 文件
- android - 仅在没有缺口的手机上录制和工作时,媒体记录器变黑
- printthis - printThis - 不要求选择打印机
- node.js - 节点获取:[DEP0066] DeprecationWarning:OutgoingMessage.prototype._headers 已弃用
- angular - 离子输入 e2e 测试导致元素不可交互
- sql - Oracle SQL:显示按列分组的行的行号
- angular - 上传 PUT 请求由 Angular ServiceWorker 发送两次