如何扁平化SQL结果集?按EMPLOYEECODE合并记录取起止时间极值
解决方案思路与实现代码
核心思路
通过分组聚合实现结果扁平化:以EMPLOYEECODE为分组依据,对每个分组内的STARTIME取最小值,ENDTIME取最大值,同时保留该员工的其他固定属性(如姓名等)。
通用SQL实现
SELECT EMPLOYEECODE, MIN(STARTIME) AS MIN_STARTIME, MAX(ENDTIME) AS MAX_ENDTIME, -- 若同EMPLOYEECODE对应的其他字段(如EMPLOYEENAME)值唯一,可直接使用聚合函数或加入GROUP BY MAX(EMPLOYEENAME) AS EMPLOYEENAME FROM 你的数据表名 GROUP BY EMPLOYEECODE -- 若其他字段值唯一,也可将其加入GROUP BY,比如:GROUP BY EMPLOYEECODE, EMPLOYEENAME
补充说明
- 如果同一
EMPLOYEECODE下存在其他字段值不唯一的情况,需先确认业务规则(如保留最新值/任意值),再选择对应的聚合逻辑。 - 上述代码适用于MySQL、SQL Server、Oracle等主流关系型数据库,
MIN()和MAX()为通用聚合函数,对日期类型同样生效。
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

