我有一个表,其中包含每周数据,并带有一列,用于标识一周中何时加载数据。
这是示例数据
====================
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行。
我想念什么?
答案 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;