我有两个几乎相同的数据集,我正在尝试合并它们,但我只想在文件 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, DATE, TYPE FROM TABLE B
答案 0 :(得分: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)
答案 1 :(得分:0)
您可以将 union all
与 not exists
一起使用,如下所示:
SELECT DISTINCT FILE, DATE, TYPE FROM TABLEA
UNION
SELECT DISTINCT FILE, DATE, 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
。