如何找到丢失的数据?

时间:2018-12-14 03:17:43

标签: sql

我有表名:installs包括3列:log_dateproduct_codeinstalls。我想找出product_code缺少数据的最新日期。如果product_code有日期,则返回T,或者缺少数据则返回F。

enter image description here

以下是一些示例数据:

log_date       product_code  installs
1/1/2018 0:00     a            24
1/1/2018 0:00     c            425
1/1/2018 0:00     d            1
1/1/2018 0:00     g            170
1/1/2018 0:00     h            18
1/1/2018 0:00     i            3
1/1/2018 0:00     k            1
1/1/2018 0:00     l            6
1/1/2018 0:00     m            5

log_date       product_code  installs
1/1/2018 0:00     a            T
1/1/2018 0:00     b            F
1/1/2018 0:00     c            T
1/1/2018 0:00     d            T
1/1/2018 0:00     e            F
1/1/2018 0:00     g            T
1/1/2018 0:00     h            T
1/1/2018 0:00     i            T
1/1/2018 0:00     f            F

1 个答案:

答案 0 :(得分:0)

使用cross join定义行,然后使用left join引入所需的信息。我假设您有一个products表:

select d.log_date, p.product_code,
       (case when i.product_code is null then 'N' else 'N' end) as flag
from (select distinct log_date from installs i) d cross join
     products p left join
     installs i
     on i.product_code = p.product_code and i.log_date = d.log_date
order by d.log_date, p.product_code;