我有表名:installs
包括3列:log_date
,product_code
和installs
。我想找出product_code缺少数据的最新日期。如果product_code有日期,则返回T,或者缺少数据则返回F。
以下是一些示例数据:
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
答案 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;