带日期列的完整外部自我连接

时间:2018-10-29 13:42:37

标签: sql sql-server tsql

我有一个表,其中包含每周数据,并带有一列,用于标识一周中何时加载数据。
这是示例数据

====================
Load_Date   |Code
====================
1 Oct 2018  |875465
8 Oct 2018  |875465
15 Oct 2018 |875465

此外,此表具有所有52周的数据,因此,如果我执行DISTINCT Load_Date,则该表将为我提供每周52天的日期。
我正在尝试将表格与自身连接起来,以便确定星期where Code IS NULL
我尝试形成的查询是

SELECT * FROM 
(--Query to get all distinct weeks
    SELECT DISTINCT LOAD_DATE FROM ztable
) dates
FULL OUTER JOIN 
(
    SELECT DISTINCT CODE, LOAD_DATE
    FROM ztable
) z
    ON z.LOAD_DATE = dates.LOAD_DATE

我也尝试过使用左联接,但是每个code上的记录数是code在表中的行数,而不是52。
例如,如果code有3行,那么此联接将仅显示3行。
我想念什么?

1 个答案:

答案 0 :(得分:2)

我认为您正在尝试查找不存在的code / load_date组合。按照您的说明(而不是示例代码),我认为是:

select d.load_date, c.code
from (select distinct load_date from t) d cross join
     (select distinct code from t) c left join
     t
     on d.load_date = t.load_date and c.code = t.code
where t.code is null;