客户场景:
想获取日期字段的最大值,这个最大值不论筛选器如何筛选日期的范围,获取到的都是日期字段中的最大日期。
例如:
日期字段具体值是:2025-01-09,2025-02-01,2025-01-20,2025-03-08
筛选器筛选日期范围是:2025-01-01~2025-02-20
此时我希望取到的日期最大值还是:2025-03-08
实现步骤:
可以在ETL中实现:
通过子查询计算全局最大日期并与筛选结果结合,确保最大值不受过滤条件影响。
具体步骤如下:
- 计算全局最大日期:使用子查询获取整个表的日期最大值。
- 交叉连接(CROSS JOIN):将全局最大值附加到筛选后的每一行数据上。
示例代码:
SELECT
t.*,
g.global_max_date
FROM
your_table t
CROSS JOIN (
SELECT MAX(date) AS global_max_date
FROM your_table
) g
WHERE
t.date BETWEEN '2025-01-01' AND '2025-02-20'
说明:
- 子查询 g:独立计算整个表的最大日期(global_max_date),不受后续WHERE条件影响。
- CROSS JOIN:将全局最大值与筛选后的数据结合,确保每行都包含该值。
- 筛选条件:仅作用于主表t,不会影响子查询中的最大值计算。
结果示例:
其他字段 | date | global_max_date |
... | 2025-01-09 | 2025-03-08 |
... | 2025-02-01 | 2025-03-08 |
... | 2025-01-20 | 2025-03-08 |
案例展示:

