Databricks SQL分组问题:日期致多行,需合并为单行取最大日期
Databricks SQL分组问题解决方案
你的问题出在GROUP BY子句里包含了DATE_START和DATE_END——只要这两个日期字段的值不同,就会被分成独立分组,最终生成多行结果。要实现按PRIMARY_KEY合并为单行,并取最大日期作为主日期,需要修改分组逻辑,用聚合函数处理日期字段:
修正后的查询代码:
WITH Final AS ( SELECT PRIMARY_KEY, DUMMYCOLUMN, MAX(DATE_START) AS DATE_START, MAX(DATE_END) AS DATE_END, ARRAY_JOIN(COLLECT_SET(Sales), ', ') AS TEST FROM Contract GROUP BY PRIMARY_KEY, DUMMYCOLUMN ) SELECT * FROM FINAL
关键改动说明:
- 移除
GROUP BY中的DATE_START和DATE_END,仅保留需要唯一分组的PRIMARY_KEY(如果DUMMYCOLUMN在同一PRIMARY_KEY下值固定,需保留在GROUP BY中;若值不固定,可改用MAX(DUMMYCOLUMN)这类聚合函数处理) - 对
DATE_START和DATE_END使用MAX()聚合函数,获取每组中的最大日期 - 保留
ARRAY_JOIN(COLLECT_SET(Sales), ', ')来合并同一分组下的Sales文本值
内容的提问来源于stack exchange,提问作者Łukasz Orzechowski
相关产品推荐
相关产品推荐

