sql-server - 比较表 A 中的两个数据集并插入表 B
问题描述
我有一个场景。有两个表 TABLE-A 和 TABLE-B。来源是表-A。目的地是表-B。我想将 ID 与自我加入进行比较。如果 ID 匹配,我想确保只选择 NOT NULL 值。如果两条记录都具有 NULL 值,则可以将 Null 值视为输出。
在下面的场景中,TABLE-A 有一个重复的 ID,即 1。在输出中,我将有一个重复记录的值,并智能地合并数据,排除 NULL 值,如果两个记录的任何列都具有 NULL,则将填充 NULL表-B。
表A
ID 名称 地址 电话 状态 PROCESSFLAG 1 你 XYZ NULL NULL 1 2 PQR ABC 123 激活 2 1 你空 322 空 2
输出表 B
ID 名称 地址 电话 状态 PROCESSFLAG 2 PQR ABC 123 激活 2 1 你 XYZ 322 空 2
解决方案
您可以group by id
为每列选择 max() 以排除空值:
insert into tableb(id, name, address, phone, status, processflag)
select id, max(name), max(address), max(phone), max(status), max(processflag)
from tablea
group by id
我假设您的问题是重复项的空值和非空列在不同行中具有相同的值,或者您想要两个值中的最大值,例如您的样本数据。
请参阅演示。
结果:
ID | NAME | ADDRESS | PHONE | STATUS | PROCESSFLAG
-: | :--- | :------ | :---- | :----- | ----------:
1 | YOU | XYZ | 322 | null | 2
2 | PQR | ABC | 123 | Active | 2
推荐阅读
- amazon-web-services - 如何使用 aws cdk 生成 IAM 服务特定凭证?
- flutter - 颤振:使用等待时的区别
- php - 当我回显当前会话值时,前一个会话值消失了,我希望它也显示要做什么
- sql - 尝试连接列行值时将数据类型 varchar 转换为 bigint 时出错
- javascript - JS - 其他 SO 帖子说“this”应该保留在内联函数中。我误解了什么?
- html - 两行下拉菜单
- java - TestContainers - 无法连接到 MySQLContainer Docker - 集成测试
- javascript - 在 XMLHttprequest 中获取图像缩略图
- bash - bash:替换大括号内的字符串
- reactjs - 将值从组件传递到上下文,并在 componentDidMount() 方法中使用该值