【发布时间】:2018-02-06 07:37:19
【问题描述】:
我在查询中遇到了一个问题,并且我被困了很长一段时间。这里的情况:我有一个表,其中包含某些记录,这些记录通过 ValidFrom 和 ValidTo 终止。该表跟踪另一个表的数据更改 - 每次基础数据更改时,最后一条有效记录都会终止并执行插入。按照 SQL 小提琴示例:
http://sqlfiddle.com/#!18/15c7f/4/0
我试图实现的是将一个时间跨度内具有相同标志的记录分组为一条记录。在我的小提琴示范中:我希望前两条记录与 ValidFrom 2017-01-01 和 ValidTo 2017-01-10 合并为一条记录。
无论如何,我被严重卡住了,我尝试了许多我在这里和另一个论坛中找到的方法 - 但没有成功。小提琴中包含一种方法:评估按日期排序的行号并减去由标志列等分区的行号......但没有任何效果。
任何帮助将不胜感激。
【问题讨论】:
-
group records with identical Flags within a timespan- 指定什么时间跨度? -
参见小提琴的例子:例如2017-01-01 - 2017-01-05 和 2017-01-06 - 2017-01-10 应合并为一条记录,因为 Flag1 和 Flag2 是相同的。 2017-01-20 - 2017-01-21 和 2017-01-22 - 2017-01-27 也是如此。但是: 2017-01-28 - 2017-02-01 应该得到一个新组 - 即使它与前两条记录具有相同的标志 - 因为它是一个单独的时间范围并且不直接跟随前两行
-
你能发布你的输出吗?
-
它也在小提琴中......我将它添加到了 OP
标签: sql sql-server tsql