首页 > 解决方案 > 用于合并记录的 SQL 查询

问题描述

我在 SQL Server 数据库中有一个 EMPLOYEE 表,其中包含以下列和数据

在此处输入图像描述

我想合并第一条、第二条和第三条记录(ORDERED BY START_DATE),因为它们只是扩展并产生以下输出

在此处输入图像描述

如您所见,我已合并前 3 条记录,并从第一行获取 START_DATE 并从第三行结束 END_DATE

我需要一个 SQL 查询来创建这个输出,如果他们的employee_types 相同,它将合并employee_id 的连续记录(基于时间)。

标签: sqlsql-servermerge

解决方案


这应该会有所帮助,尽管您应该真正标记目标数据库,并避免随机标记。

对于 SQL Server 和 MySQL

SELECT 
    employee_id
,   employee_type 
,   MIN(start_date) start_date
,   MAX(end_date) end_date
FROM 
    EMPLOYEE 
GROUP BY 
    employee_id
,   employee_type 
,   YEAR(end_date)
ORDER BY start_date

和甲骨文

SELECT 
    employee_id
,   employee_type 
,   MIN(start_date) start_date
,   MAX(end_date) end_date
FROM 
    EMPLOYEE 
GROUP BY 
    employee_id
,   employee_type 
,   extract(year from end_date)
ORDER BY start_date

演示:

SQL 服务器

甲骨文

MySQL


推荐阅读