Power BI中基于最新Crawl_date从另一表取值并生成check判断列
解决方案
要实现这个需求,我们可以通过获取表A中每个卖家的最新记录,再关联表B进行条件判断来完成。以下是具体的SQL实现:
-- 先获取表A中每个卖家的最新爬取日期对应的记录 WITH LatestSellerData AS ( SELECT Seller, Value, ROW_NUMBER() OVER (PARTITION BY Seller ORDER BY Crawl_date DESC) AS rn FROM 表A ) -- 关联表B生成check列 SELECT b.Seller, CASE WHEN ls.Seller IS NOT NULL AND ls.Value > 0 THEN 'True' ELSE 'False' END AS check FROM 表B b LEFT JOIN LatestSellerData ls ON b.Seller = ls.Seller AND ls.rn = 1;
代码说明
- CTE部分(LatestSellerData):
- 使用
ROW_NUMBER()窗口函数,按卖家分组(PARTITION BY Seller),并按爬取日期倒序排序(ORDER BY Crawl_date DESC),每个卖家的最新记录会被标记为rn=1。
- 使用
- 主查询部分:
- 将表B与CTE结果左关联,确保表B的所有卖家都被保留。
- 通过
CASE语句判断:如果卖家在表A存在(ls.Seller IS NOT NULL)且最新记录的Value大于0,则标记为True,否则标记为False。
验证结果
执行上述SQL后,输出结果与期望一致:
| Seller | check |
|---|---|
| Mat | True |
| Harry | True |
| cat | False |
| Jon | False |
| Om | False |
内容的提问来源于stack exchange,提问作者harry
相关产品推荐
相关产品推荐

