sql - 用于合并记录的 SQL 查询
问题描述
我在 SQL Server 数据库中有一个 EMPLOYEE 表,其中包含以下列和数据
我想合并第一条、第二条和第三条记录(ORDERED BY START_DATE),因为它们只是扩展并产生以下输出
如您所见,我已合并前 3 条记录,并从第一行获取 START_DATE 并从第三行结束 END_DATE
我需要一个 SQL 查询来创建这个输出,如果他们的employee_types 相同,它将合并employee_id 的连续记录(基于时间)。
解决方案
这应该会有所帮助,尽管您应该真正标记目标数据库,并避免随机标记。
对于 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
演示:
推荐阅读
- java - 如何知道字符变量包含哪些内容?
- python - 如何打印一个十进制数,最多 n 个十进制值,如果最后忽略 0?
- java - 为什么 ant Manifest 任务拆分长主类名?
- get - RestTemplate getForObject 工作了几个小时,然后抛出 400 错误请求,最终更改为 494 UnsupportedHttpStatusCodeException
- reactjs - React + Webpack:无法将我的所有路由重定向到 index.html
- python - Python WHILE 循环,难以理解
- php - 这是 Wordpress 偏移的正确代码吗?
- c# - 使用 nreco.generated 将 HTML 转换为 PDF 时第一页空白
- java - 环游世界找到开始的最低点
- javascript - 异步队列 - 不等待