Sql 如何将数据集与特定规则合并

Sql 如何将数据集与特定规则合并,sql,datetime,union,snowflake-cloud-data-platform,full-outer-join,Sql,Datetime,Union,Snowflake Cloud Data Platform,Full Outer Join,我有两个几乎相同的数据集,我正试图合并它们,但我只想在文件1中没有日期的情况下合并它们 数据集1 文件 日期 类型 1. 1/1/2020 A. 1. 1/2/2020 B 1. 1/3/2020 C 您可以将union all与not exists一起使用,如下所示: SELECT DISTINCT FILE, DATE, TYPE FROM TABLEA UNION SELECT DISTINCT FILE, DATE, TYPE FROM TABLEB B WHERE NOT EXISTS

我有两个几乎相同的数据集,我正试图合并它们,但我只想在文件1中没有日期的情况下合并它们

数据集1

文件 日期 类型 1. 1/1/2020 A. 1. 1/2/2020 B 1. 1/3/2020 C
您可以将
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相似,因为它删除了重复项。如果单个表中没有重复项,则可以从查询中删除
独立的

您描述的是
完全联接。Popeye的答案是有效的,并且是不支持语法的数据库中的典型方法。但是,查询更简单、更有效,如下所示:

select coalesce(t1.file, t2.file) as file, date, coalesce(t1.type, t2.type) as type
from t1
full outer join t2 using (date)

如果有10多列,有没有更简单的方法来实现这一点,或者我必须在每个列和别名周围使用coalesce?@andaman:没有,您需要
coalesce()