查询合并连续时间记录

2024-04-03

我有一个这样的表:

id     START_DATE   end_date
1      01/01/2011   01/10/2011
2      01/11/2011   01/20/2011
3      01/25/2011   02/01/2011
4      02/10/2011   02/15/2011
5      02/16/2011   02/27/2011

我想合并起始日期是另一条记录的结束日期的第二天的记录:所以结束记录应该是这样的:

new_id     START_DATE   end_date
1         01/01/2011   01/20/2011
2         01/25/2011   02/01/2011
3         02/10/2011   02/27/2011

我知道执行此操作的一种方法是创建一个基于行的临时表,其中各行作为日期(每个记录对应一个日期,在总天数范围内),从而使表平坦。

但必须有一种更清晰的方法来在单个查询中执行此操作......例如使用 row_num 的东西?

多谢你们。


declare @T table
(
  id int,
  start_date datetime,
  end_date datetime
)

insert into @T values
(1,      '01/01/2011',   '01/10/2011'),
(2,      '01/11/2011',   '01/20/2011'),
(3,      '01/25/2011',   '02/01/2011'),
(4,      '02/10/2011',   '02/15/2011'),
(5,      '02/16/2011',   '02/27/2011')

select row_number() over(order by min(dt)) as new_id,
       min(dt) as start_date,
       max(dt) as end_date
from (
      select dateadd(day, N.Number, start_date) as dt,
             dateadd(day, N.Number - row_number() over(order by dateadd(day, N.Number, start_date)), start_date) as grp
      from @T
        inner join master..spt_values as N
          on N.number between 0 and datediff(day, start_date, end_date) and
             N.type = 'P'
     ) as T
group by grp
order by new_id        

您可以使用数字表 https://stackoverflow.com/questions/10819/sql-auxiliary-table-of-numbers而不是使用master..spt_values.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查询合并连续时间记录 的相关文章

  • SQL Server 时区更改

    我在同一个 SQL Server 上有 2 个数据库 是否有可能一个在太平洋标准时间 另一个在东部标准时间 不 日期 时间源自运行 SQL Server 实例的计算机的操作系统 不过 您可以拥有一个自定义 UDF 您可以调用该 UDF 而不
  • 删除 t-sql 中所有大表的最佳方法是什么?

    我们遇到了一个有点奇怪的情况 基本上 我们的一个数据库中有两个表 其中包含大量我们不需要或不关心的日志信息 部分原因是我们的磁盘空间不足 我正在尝试清理表 但这需要很长时间 在周末运行后仍然有 57 000 000 多条记录 而这只是第一个
  • CLR 存储过程:如何设置架构/所有者?

    我正在开发一个基于 Linq 的 CLR 存储过程 用于一些复杂的过滤和操作 否则如果在更 传统 的存储过程中实现 则需要大量混乱且性能较差的 T SQL 代码 这工作得很好 但我找不到如何在部署阶段设置此存储过程的架构 以便更好地组织和分
  • Java/MSSQL:java.sql.SQLException 无效的对象名称“TableName”

    我正在尝试将 java 应用程序从旧服务器移动到新服务器 该应用程序在 Tomcat 上运行 使用 Microsoft SQL Server 作为后端数据库 并使用数据源 ODBC 中定义的系统 DSN 来决定连接到哪里 旧服务器使用Win
  • 检测是否安装了 SQL Server Compact Edition 3.5 SP2 x64?

    我正在构建一个安装程序 并且想要引导 SQL Server Compact Edition 3 5 SP2 问题是我正在寻找注册表项HKLM SOFTWARE Microsoft Microsoft SQL Server Compact E
  • 在 SQL Server 2005 存储过程中使用 .NET Framework 3.5

    我有一个 SQL Server 2005 服务器 我想在其上运行 Net CLR 存储过程 但是 我想使用 NET Framework 3 5 如果我现在尝试这个 我会收到以下错误 Error Assembly system core ve
  • 我无法访问 SQL 2005 实例的所有原因

    我已经安装了 SQL 2005 Express 的实例
  • 在 IF .. ELSE 语句中使用临时表

    为什么SQL Server坚持认为临时表已经存在 其中之一将会发生 所以永远不会出现这种情况 declare checkvar varchar 10 declare tbl TABLE colx varchar 10 set checkva
  • 仅返回存储过程的最后一个选择结果

    要求表示 存储过程用于根据 5 个标识符搜索数据 如果存在精确匹配 则仅返回精确匹配 如果没有 但非空参数上存在精确匹配 则仅返回这些结果 否则返回任何 4 个非空参数上的任何匹配 等等 我的 简化的 代码如下所示 create proce
  • 如何修复 SQL Server 中阿拉伯文与英文混合的反向字符

    我有一个 SQL Server 数据库 表列在同一字段中包含阿拉伯语和英语字符 就像Oracle 寻求您的帮助 将阿拉伯字符与英文字符分开以反转它们 因为阿拉伯字符在字段中没有特定的位置 开始 结束或中间 Edit这些字符来自旧版 IBM
  • 基于不同列值的默认列值

    SQL Server 2005 我有一个带有 Column 的表 但是 Column int 我可以添加默认值吗ColumnB以便ColumnB是 15 如果ColumnA是 1 并且ColumnB是 0 如果ColumnA is 0 我知
  • SQL Server:使用数字文字进行计算

    我用浮点计算做了一些测试 以尽量减少精度损失 我偶然发现了一个现象 我想在这里展示并希望得到解释 当我写作时 print 1 0 1 0 60 0 结果是 60 0024000960 当我编写相同的公式并进行显式转换时float print
  • SQL - 是否有更好的方法将用于 where 子句的键列表传递到存储过程中?

    这是场景 我有一个清单客户ID 1 2 3 具有相关性OrderIds 我有一个存储过程Delete OrdersByCustomerIds 删除与该订单相关的所有订单客户ID指定的 目前 我这样做的方法是将客户ID转换为字符串 即 1 2
  • SQL Server 2008 相对于 SQL Server 2005 有何优势? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • SQL Server Management Studio 2005 或 2008 是否有 SVN 插件? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 正在寻找一个 源代码控制 插件来将 SSMS 与 Subversion SVN 集成 有人知道其中一个吗 Redgate 的解决方案似乎是
  • 如何从 SQL Server 2005 数据库中删除脱机文件

    我有一个数据库 前段时间从 SQL 2000 实例恢复到 SQL 2005 实例 SQL 2000 实例定义了旧的 未使用的全文搜索 看来 当文件恢复时 全文搜索并没有恢复 只是被删除了 这使数据库处于一种有趣的状态 FTS 文件仍然与数据
  • 如何查找 SQL Server 数据库中所有空间的使用情况

    我们有一个 SQL Server 数据库 根据 Microsoft SQL Server Management Studio 的数据 该数据库只有 6436Mb 中的 119Mb 可用 然而命令 EXEC sp msforeachtable
  • 出错时退出并回滚脚本中的所有内容

    我有一个 TSQL 脚本 它可以进行大量数据库结构调整 但在出现故障时让它继续执行并不真正安全 把事情说清楚 使用 MS SQL 2005 它不是一个存储过程 只是一个脚本文件 sql 我所拥有的按以下顺序排列 BEGIN TRANSACT
  • 触发器以捕获服务器中的架构更改

    是否可以实现类似以下触发器的东西 CREATE TRIGGER tr AU ddl All Server ON DATABASE WITH EXECUTE AS self FOR DDL DATABASE LEVEL EVENTS AS D
  • 一组记录中某些值相同的唯一约束

    DBMS MS Sql Server 2005 标准版 我想创建一个表约束 以便只有一个记录在表的子集中具有特定值 其中行共享特定列中的值 这可能吗 Example 我的 myTable 中有一些记录 其中有一个非唯一的外键 fk1 以及一

随机推荐

  • Mysql查询查找具有相同列值的字段之和

    我有一张这样的桌子 id invent id order 1 95948214 70 2 46018572 30 3 46018572 20 4 46018572 50 5 36025764 60 6 36025764 70 7 95948
  • Java音乐播放器:歌曲信息和播放[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 在Android中 我们可以使用媒体播放器在设备上播放歌曲 并使用光标来获取曲目信息 操作系统跟踪的信
  • 简单登录返回空白页

    我正在学习 PHP 并且制作了一个简单的登录脚本 但问题是它仅将我重定向到空白页面 如果用户凭据正确 它的意思是重定向到index php 但情况显然并非如此 还有验证 如果用户输入空白 则会返回错误 这似乎没有被执行 登录 php
  • 使用 rdmsr/rdpmc 提高分支预测精度

    我试图了解分支预测单元在 CPU 中如何工作 我用过papi还有linux的perf events但他们都没有给出准确的结果 对于我的情况 这是我的代码 void func int arr int sequence len for int
  • 在c中获取浮点数的指数

    抱歉 如果已经有人问过这个问题 并且我已经看到了提取浮点数指数的其他方法 但这就是给我的 unsigned f2i float f union unsigned i float f x x i 0 x f f return x i 我无法理
  • css4 中可以使用父选择器吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 Here is fiddle http jsfiddle net uday redI V9F7d 7 我有 2 个 div 一个是外盒 另一个是
  • Matplotlib 在 vi​​rtualenv 中不显示图形

    我已经在我的 virtualenv 中安装了 pip matplotlib 并且正在尝试绘制一个简单的图表 我使用 Eclipse 和 PyDev 当我从 Eclipse 运行脚本时 它根本不显示任何图形 我已经尝试过其他问题中提出的建议
  • 是否可以在 Cloudformation 中更新 Elastic Beanstalk 环境而不影响部署到其中的版本?

    我正在使用 Cloudformation 创建 Elastic Beanstalk 环境 我必须创建一个 ApplicationVersion 只是为了启动它并将其输入到环境的定义中 我创建其他应用程序版本并以其他方式将它们部署到集群 Co
  • C 线程编程 - 增加共享变量

    嘿伙计们 所以我正在尝试温习我的 C 线程 我发现的一个问题是 给定一个全局变量 int x 0 实现函数 void 无用 int n 它创建 n 个线程 在循环中将 x 加 1 每个线程在 x 达到 100 时终止 我只是没有掌握线程 需
  • 在结账页面和 WooCommerce 数据字段中添加取货地点自定义字段

    我在另一个类似问题的答案中找到了以下解决方案 根据 WooCommerce 中的自定义字段值将文本添加到订单摘要 https stackoverflow com questions 45906636 add text to order su
  • 如何将多列传递给php中的变量

    我正在开发一个项目 该项目需要将多个列内容传递给 php 变量 我能够选择一列内容并将其传递给变量 但在多列上失败 myEMPNEM sqlNEM SELECT first name middle name last name job ti
  • 如何在PowerShell中将数据导出为CSV?

    foreach computer in computerlist if Test Connection Cn computer BufferSize 16 Count 1 ea 0 quiet foreach file in REMOVE
  • 取消选中所有使用 *ngFor 创建的复选框

    我有一个表 其中有一列 其中每行包含一个复选框 使用 ngFor 单击按钮后 我想取消选中所有复选框 我尝试使用 ngModel boxChecked 对于每个复选框 并在我的按钮单击调用的方法中将该值设置为 false 但这会导致每当我仅
  • AngularJS 无法在发布模式下工作(缩小)

    我的项目中有 AngularJS 和 Bootstrap 的 Angular 指令 这两个指令都是通过 Nuget 添加的 When 编译调试 真 一切都很好 但是一旦我改变了编译调试 to false Angular 停止工作 并且我在
  • Objective-C 中的 __OBJC__

    什么是 OBJC 在 Objective C 中是什么意思 import
  • 如何在textBlock上设置点击效果并打开新的WPF窗口?

    您好 我是 WPF 新手 我正在努力学习它 所以现在我想知道如何在列表框中的文本块上创建 onclick 效果 我想单击列表框中的任何项目并打开一个新窗口 我一定做错了什么 但我不知道那是什么 到目前为止我有以下内容
  • 如何在Android WebView中获取加载的网页标题?

    我在应用程序中使用 WebView 我需要根据用户所在的页面更改应用程序标题 我怎样才能在 Android WebView 中做到这一点 我通过以下行在 iPhone 中执行此操作 self title webPage stringByEv
  • 如何在 C# 中截断列表?

    我知道在 python 中你可以做类似的事情myList 1 20 但是C 中有类似的东西吗 var itemsOneThroughTwenty myList Take 20 var itemsFiveThroughTwenty myLis
  • 无法将 8 位地址移至 16 位寄存器

    我正在尝试分配变量来注册 代码如下 ORG 100h var1 DB 10 var2 DB 20 MOV BX var1 error operands do not match 16 bit register and 8 bit addre
  • 查询合并连续时间记录

    我有一个这样的表 id START DATE end date 1 01 01 2011 01 10 2011 2 01 11 2011 01 20 2011 3 01 25 2011 02 01 2011 4 02 10 2011 02