如何解决如何将数据集与特定规则联合
我有两个几乎相同的数据集,我正在尝试合并它们,但我只想在文件 1 中没有日期的情况下合并它们。
数据集 1
文件 | 日期 | 类型 |
---|---|---|
1 | 1/1/2020 | 一 |
1 | 1/2/2020 | b |
1 | 1/3/2020 | c |
数据集 2
文件 | 日期 | 类型 |
---|---|---|
2 | 1/1/2020 | 一 |
2 | 1/2/2020 | b |
2 | 1/3/2020 | c |
2 | 1/4/2020 | d |
理想输出
文件 | 日期 | 类型 |
---|---|---|
1 | 1/1/2020 | 一 |
1 | 1/2/2020 | b |
1 | 1/3/2020 | c |
2 | 1/4/2020 | d |
如果两个数据集具有相同的日期,那么我只想使用文件 #1 中的数据
SELECT FILE,DATE,TYPE FROM TABLE A
UNION
SELECT FILE,TYPE FROM TABLE B
[设置] https://www.db-fiddle.com/f/whfZGwnAJcAYaQii6avF6k/1
解决方法
您正在描述一个 full join
。 Popeye 的答案有效并且是不支持语法的数据库中的典型方法。但是 Snowflake does,因此查询更简单,更有效地表述为:
select coalesce(t1.file,t2.file) as file,date,coalesce(t1.type,t2.type) as type
from t1
full outer join t2 using (date)
,
您可以将 union all
与 not exists
一起使用,如下所示:
SELECT DISTINCT FILE,DATE,TYPE FROM TABLEA
UNION
SELECT DISTINCT FILE,TYPE FROM TABLEB B
WHERE NOT EXISTS
(SELECT 1 FROM TABLEA A
WHERE A.DATE = B.DATE
AND A.TYPE = B.TYPE)
注意:我使用 distinct
使逻辑类似于 union 删除重复项。如果您的各个表中没有重复项,您可以从查询中删除 distinct
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。