【发布时间】:2019-01-20 02:39:25
【问题描述】:
我在 SQL Server 数据库中有一个 EMPLOYEE 表,其中包含以下列和数据
我想合并第一条、第二条和第三条记录(ORDERED BY START_DATE),因为它们只是扩展并产生以下输出
如您所见,我已合并前 3 条记录,并从第一行获取 START_DATE,并从第三行结束 END_DATE
我需要一个 SQL 查询来创建这个输出,如果他们的employee_types 相同,它将合并一个employee_id 的连续记录(基于时间)。
【问题讨论】:
-
为什么三个不同的数据库系统都有不同的SQL方言?或者该解决方案是否需要在 MySQL、SQL Server 和 Oracle 数据库中运行?
-
SQL 也被定义为 orderless。诸如“前 3 条记录”、“第一条记录”、“第二条记录”、“第三条记录”之类的含义定义也是 无意义。您是否有一个列可以用来识别顺序?就像自动递增的 id 或 datetime 列在插入/更新时更新
-
另外我建议您将 start_date 和 end_date 数据转换为 DATETIME 数据库。
-
我标记 MySQL、SQL Server 和 Oracle 的原因是因为我们需要为所有 3 个数据库提供解决方案。同意。我会标记其中之一。关于无序,我试图建立的顺序是通过 START_DATE。
标签: sql sql-server merge