【发布时间】:2012-04-10 16:41:22
【问题描述】:
我在t_resourcetable 中有一些脏资源使用记录,看起来像这样
我需要以这种方式合并那些脏行
resNo subres startdate enddate 1 2 2012-01-02 22:03:00.000 2012-01-04 16:23:00.000 1 3 2012-01-06 16:23:00.000 2012-01-06 22:23:00.000 2 2 2012-01-04 05:23:00.000 2012-01-06 16:23:00.000这应该更新到同一个表。我有超过 40k 行,所以不能使用游标。请帮助我通过更优化的 sql 语句来清理它。
提供的解决方案没有遇到类似的场景
resNo subres startdate enddate 1 2 2012-01-02 22:03:00.000 2012-01-03 00:00:00.000 1 2 2012-01-03 00:00:00.000 2012-01-04 00:00:00.000 1 2 2012-01-04 00:00:00.000 2012-01-04 16:23:00.000 1 2 2012-01-14 10:09:00.000 2012-01-15 00:00:00.000 1 2 2012-01-15 00:00:00.000 2012-01-16 00:00:00.000 1 2 2012-01-16 00:00:00.000 2012-01-16 03:00:00.000 1 3 2012-01-06 16:23:00.000 2012-01-06 22:23:00.000 2 2 2012-01-04 05:23:00.000 2012-01-06 16:23:00.000我需要以这种方式合并那些脏行
resNo subres startdate enddate 1 2 2012-01-02 22:03:00.000 2012-01-04 16:23:00.000 1 2 2012-01-14 10:09:00.000 2012-01-16 03:00:00.000 1 3 2012-01-06 16:23:00.000 2012-01-06 22:23:00.000 2 2 2012-01-04 05:23:00.000 2012-01-06 16:23:00.000请帮我解决这个脏数据问题。
【问题讨论】:
-
你用的是什么sql版本?
-
解释一下你用什么条件过滤?
-
合并的规则是什么?这是一个很好的起点。
-
您要合并连续的时间间隔,还是合并具有相同 resNo/subres 的所有时间间隔?它们是一样的吗?
-
是的,基于资源子资源,我需要结合特定的记录开始时间和结束时间以及俱乐部。并将其更新为一条记录,例如 resno 1 和 subres 2 从 3 开始在 1 行中合并
标签: c# sql sql-server-2008 tsql sql-server-2005