基于时间列表中的序列岛交叉表行

2024-03-17

光是写出问题标题就伤了我的头!

请多多包涵!请参阅以下 DDL 和虚拟数据:

CREATE TABLE [dbo].[tbl_Example](
    [Date] [date] NULL,
    [Time] [time](0) NULL,
    [Branch] [varchar](3) NULL,
    [Count] [int] NULL
) ON [PRIMARY]
GO
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x12350B00 AS Date), CAST(0x00907E0000000000 AS Time), N'001', 0)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x12350B00 AS Date), CAST(0x00CC7E0000000000 AS Time), N'001', 0)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x12350B00 AS Date), CAST(0x00087F0000000000 AS Time), N'001', 0)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x12350B00 AS Date), CAST(0x00447F0000000000 AS Time), N'001', 0)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x12350B00 AS Date), CAST(0x00807F0000000000 AS Time), N'001', 0)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x12350B00 AS Date), CAST(0x00BC7F0000000000 AS Time), N'001', 0)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x12350B00 AS Date), CAST(0x00F87F0000000000 AS Time), N'001', 0)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x12350B00 AS Date), CAST(0x0034800000000000 AS Time), N'001', 1)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x12350B00 AS Date), CAST(0x0070800000000000 AS Time), N'001', 1)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x12350B00 AS Date), CAST(0x00AC800000000000 AS Time), N'001', 1)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x12350B00 AS Date), CAST(0x00E8800000000000 AS Time), N'001', 1)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x12350B00 AS Date), CAST(0x0024810000000000 AS Time), N'001', 2)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x12350B00 AS Date), CAST(0x0060810000000000 AS Time), N'001', 2)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x12350B00 AS Date), CAST(0x009C810000000000 AS Time), N'001', 2)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x12350B00 AS Date), CAST(0x00D8810000000000 AS Time), N'001', 1)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x12350B00 AS Date), CAST(0x0014820000000000 AS Time), N'001', 1)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x12350B00 AS Date), CAST(0x0050820000000000 AS Time), N'001', 1)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x12350B00 AS Date), CAST(0x008C820000000000 AS Time), N'001', 1)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x12350B00 AS Date), CAST(0x00C8820000000000 AS Time), N'001', 1)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x12350B00 AS Date), CAST(0x0004830000000000 AS Time), N'001', 0)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x12350B00 AS Date), CAST(0x0040830000000000 AS Time), N'001', 0)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x12350B00 AS Date), CAST(0x00C4860000000000 AS Time), N'001', 0)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x12350B00 AS Date), CAST(0x0000870000000000 AS Time), N'001', 0)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x12350B00 AS Date), CAST(0x003C870000000000 AS Time), N'001', 0)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x12350B00 AS Date), CAST(0x0078870000000000 AS Time), N'001', 0)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x12350B00 AS Date), CAST(0x00B4870000000000 AS Time), N'001', 0)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x13350B00 AS Date), CAST(0x00907E0000000000 AS Time), N'002', 0)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x13350B00 AS Date), CAST(0x00CC7E0000000000 AS Time), N'002', 0)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x13350B00 AS Date), CAST(0x00087F0000000000 AS Time), N'002', 0)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x13350B00 AS Date), CAST(0x00447F0000000000 AS Time), N'002', 0)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x13350B00 AS Date), CAST(0x00807F0000000000 AS Time), N'002', 0)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x13350B00 AS Date), CAST(0x00BC7F0000000000 AS Time), N'002', 0)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x13350B00 AS Date), CAST(0x00F87F0000000000 AS Time), N'002', 0)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x13350B00 AS Date), CAST(0x0034800000000000 AS Time), N'002', 1)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x13350B00 AS Date), CAST(0x0070800000000000 AS Time), N'002', 1)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x13350B00 AS Date), CAST(0x00AC800000000000 AS Time), N'002', 1)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x13350B00 AS Date), CAST(0x00E8800000000000 AS Time), N'002', 1)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x13350B00 AS Date), CAST(0x0024810000000000 AS Time), N'002', 2)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x13350B00 AS Date), CAST(0x0060810000000000 AS Time), N'002', 2)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x13350B00 AS Date), CAST(0x009C810000000000 AS Time), N'002', 2)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x13350B00 AS Date), CAST(0x00D8810000000000 AS Time), N'002', 1)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x13350B00 AS Date), CAST(0x0014820000000000 AS Time), N'002', 1)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x13350B00 AS Date), CAST(0x0050820000000000 AS Time), N'002', 1)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x13350B00 AS Date), CAST(0x008C820000000000 AS Time), N'002', 1)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x13350B00 AS Date), CAST(0x00C8820000000000 AS Time), N'002', 3)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x13350B00 AS Date), CAST(0x0004830000000000 AS Time), N'002', 3)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x13350B00 AS Date), CAST(0x0040830000000000 AS Time), N'002', 3)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x13350B00 AS Date), CAST(0x007C830000000000 AS Time), N'002', 3)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x13350B00 AS Date), CAST(0x00B8830000000000 AS Time), N'002', 0)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x13350B00 AS Date), CAST(0x00F4830000000000 AS Time), N'002', 0)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x13350B00 AS Date), CAST(0x0030840000000000 AS Time), N'002', 0)
INSERT [dbo].[tbl_Example] ([Date], [Time], [Branch], [Count]) VALUES (CAST(0x13350B00 AS Date), CAST(0x006C840000000000 AS Time), N'002', 0)

现在,我需要渲染虚拟数据,如下所示:

Branch  Date        Start Time  End Time    EntryCount
======  ====        ==========  ========    ========
001     12/12/2011  09:00:00    09:06:00    0
001     12/12/2011  09:07:00    09:10:00    1
001     12/12/2011  09:11:00    09:13:00    2
001     12/12/2011  09:14:00    09:18:00    1
001     12/12/2011  09:19:00    09:20:00    0
001     12/12/2011  09:35:00    09:39:00    0
002     13/12/2011  09:00:00    09:06:00    0
002     13/12/2011  09:07:00    09:10:00    1
002     13/12/2011  09:11:00    09:13:00    2
002     13/12/2011  09:14:00    09:17:00    1
002     13/12/2011  09:18:00    09:21:00    3
002     13/12/2011  09:22:00    09:25:00    0

正如您所看到的,我需要将岛的开始时间和结束时间提取为单独的列,并根据分支、日期和条目计数来分割岛。当您处理简单的数字序列时,我已经看到了聪明的解决方案来做到这一点 - 但我无法让它们适合这种情况。我很想知道你们会如何处理这个问题。

我正在使用 SQL Server 2008+

显示岛屿边界的屏幕截图,可能是因为分支、日期或计数发生变化


;WITH T
     AS (SELECT *,
                DATEPART(HOUR, Time) * 60 + 
                DATEPART(MINUTE, Time) -
                ROW_NUMBER() OVER (PARTITION BY Branch, 
                                                Date, 
                                                Count 
                                        ORDER BY Time) AS Grp
         FROM   [dbo].[tbl_Example])
SELECT Branch,
       Date,
       MIN(Time) AS [Start Time],
       MAX(Time) AS [End Time],
       [Count]   AS EntryCount
FROM   T
GROUP  BY Branch,
          Date,
          [Count],
          Grp
ORDER  BY Branch,
          Date,
          [Start Time]  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于时间列表中的序列岛交叉表行 的相关文章

  • Kerberos 双跳

    我们遇到了臭名昭著的 Kerberos 双跳问题 这是一个全新的域 是从以前使用模拟和委派的另一个提供商迁移而来的 我们已将操作系统升级到最新的 SQL 服务器 2017 WPF 应用程序 使用域凭据 gt Web 服务 IIS 10 上的
  • 对多个数据库执行 SQL 查询

    我知道我的帖子与该论坛中的其他帖子的标题非常相似 但我真的找不到我需要的答案 这是我的问题 我的 Windows Server 上运行着 SQL Server 在我的 SQL Server 中 我有大约 30 个数据库 它们都具有相同的表和
  • 探查器模板可以迁移到较新版本的 SQL Profiler 吗?

    是否可以将 Profiler 模板迁移到较新版本的 SQL Server 就我而言 我想将 SQL 2008 模板带到 2012 年 我尝试过 1 直接文件复制和 2 导出 导入 在这两种情况下 旧模板都会运行 但无法修改 修改后会出现以下
  • 重命名重复行

    这是我的问题的一个简化示例 我有一个表 其中有一个包含重复条目的 名称 列 ID Name 1 AAA 2 AAA 3 AAA 4 BBB 5 CCC 6 CCC 7 DDD 8 DDD 9 DDD 10 DDD 进行 GROUP BY 操
  • 为什么 SqlClient 在传递 SqlXml 时使用不必要的 XML 转换?

    我有一个关于从 C 代码将 xml 数据类型传递给查询的问题 首先 这是 SQL Server 上的一个表 CREATE TABLE dbo XmlTable id int IDENTITY 1 1 NOT NULL dat xml NOT
  • 将表数据从一个 SQL Server 导出到另一台 SQL Server

    我有两个 SQL Server 都是 2005 版本 我想将多个表从一个表迁移到另一个表 我努力了 在源服务器上 我右键单击数据库 选择Tasks Generate scripts 问题是在下面Table View options没有Scr
  • 如何在NiFi中映射流文件中的列数据?

    我有 csv 文件 其结构如下 Alfreds Centro Ernst Island Bacchus Germany Mexico Austria UK Canada 01 02 03 04 05 现在我必须将这些数据移入数据库 如下所示
  • 可以获取SQL Server中当前执行的存储过程的行号吗?

    几年前 我在 Sybase Delphi 环境中工作 使用 BDE 连接到数据库服务器 我们有一个 Delphi 小应用程序 给定当前正在执行的存储过程的名称 它可以告诉您当前正在执行该存储过程的哪一行 这对于调试似乎挂起的存储过程非常有用
  • Visual Studio 2010 中的数据库设计器

    我需要创建一个全新的 Sql Server 2008 数据库 并希望使用 Visual Studio 2010 Ultimate 中的数据库项目 我已经创建了该项目并在下面添加了一个表格dbo架构 桌子 sql仅以纯文本形式显示 但带有颜色
  • 如何修改现有表以添加时区

    我有一个包含 500 多个表的大型应用程序 我必须将应用程序转换为时区感知 当前应用程序使用new java util Date GETDATE 与服务器的时区 即没有任何时区支持 我已将这项任务分为几个步骤 以便于开发 我确定的第一个步骤
  • 从 SQLCMD 执行 CREATE VIEW 和 ALTER VIEW

    我正在尝试使用 sql cmd 执行包含以下内容的 sql 文件 sqlcmd S localhost dbInstance i Sample sql v filepath C Sql 示例 sql内容 根据手册 CREATE VIEW 必
  • 普通表还是全局临时表?

    我和另一位开发人员正在讨论哪种类型的表更适合我们的任务 它基本上是一个我们将在一天结束时截断的缓存 就我个人而言 我认为没有任何理由为此使用除普通表之外的任何内容 但他想使用全局临时表 其中之一有什么优点吗 使用普通表tempdb如果这只是
  • 在 SQL 中将数字求小数次幂

    我试图在 MS SQL 中将一系列数字求小数 1 5 次幂 但在应用于负基数时出现 域错误 这应该不是问题 因为我要提升到奇次幂根 此外 我可以在 Excel 中进行计算 谁能评论一下 MS SQL 是否根本不支持将负幂提高到小数根 负基数
  • 如何从 SQL Server 存储过程返回值并在 Access VBA 中使用它们

    我已经在 SQL Server 中设置了一个运行良好的存储过程 我现在可以从 VBA 调用它 但想返回一个值以了解是否存在任何错误等 我的 SP 中的最后一个参数设置为 OUTPUT DataSetID int 0 Destination
  • 如何避免使用 Cursor 来实现此伪代码 - SQL Server

    CREATE PROCEDURE p processDataFor accountId BEGIN for each item in select from Accounts where accountId accountId and is
  • 将 .MDF SQL Server 数据库与 ASP.NET 结合使用与使用 SQL Server

    我目前正在 ASP NET MVC 中编写一个网站 我的数据库 其中还没有任何数据 只有正确的表 使用 SQL Server 2008 我已将其安装在我的开发计算机上 我使用服务器资源管理器从应用程序连接到数据库 然后使用 LINQ to
  • SQL 中基于下一条记录和上一条记录的复杂排序

    这是一个后续问题根据 SQL 中的下一条记录和上一条记录进行排序 https stackoverflow com questions 30477803 sorting based on next and previous records i
  • 加密数据库字段的好方法?

    我被要求加密数据库中的各种数据库字段 问题是这些字段在读取后需要解密 我在用着Django and SQL Server 2005 有什么好主意吗 See 在 SQL Server 2005 数据库中使用对称加密 https web arc
  • 如何将 数组传递给存储过程

    我有一个清单索赔数据在 C 中 它有三个项目 日期 类型和描述 其中可以有多行 如下所示 索赔数据 Date Type Description 01 02 2012 Medical Its a medical 05 02 2013 Thef
  • 同一索引操作上的不同估计行?

    简介和背景 我必须优化一个简单的查询 下面的示例 重写几次后 我认识到同一个索引操作的估计行数会根据查询的编写方式而有所不同 最初 该查询执行了聚集索引扫描 因为生产中的表包含二进制列 该表相当大 大约 100 GB 并且全表扫描执行起来需

随机推荐

  • 如何将标题图像居中

    我有个问题 其他人问题的答案并没有解决我的问题 这是关于我的标题中的图像 代码如下 HTML div div img class center src http i imgur com jfDhpP5 png div div li a hr
  • 如何使用Python抓取需要先登录的网站

    首先 我认为值得一提的是 我知道有很多类似的问题 但没有一个对我有用 我是 Python html 和网络爬虫的新手 我正在尝试从需要先登录的网站中抓取用户信息 在我的测试中 我使用从 github 抓取我的电子邮件设置作为示例 主页是 h
  • 一个文件夹中包含 100 万个或更多文件,用于包含(缓存)[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我有一个 理论 问题 看看我正在计划的解决方案是否有意义 我有一个脚本 可以从数据库中读取大量数据 包括设置 配置等 并将其构建在一起 针对每个注册用
  • 当我们给定中心点和半径大小时,如何绘制球体?

    我有一个像 1 2 2 23 2 3 3 6 3 4 5 的矩阵 每一行表示一个点 What I wish to do is like this I want to create a function which is given two
  • ExpandableListView 是否需要多个 viewHolder?

    我使用这个取景器是否错误 我在第 165 行收到 NPE 是否有明显的原因导致我失踪 如果我使用 ExpandableListView 是否需要组视图持有者和子视图持有者 我标记了第 165 行 以便让眼睛更舒服 多谢 我的可扩展列表视图正
  • Vuejs 3 webpack:vue-template-compiler 问题

    我正在尝试将 vuejs 3 集成到使用 webpack 的现有项目中 我读到了有关 vue loader 的内容 所以我正在尝试使用它 在官方文档中我有这样的内容 每次发布新版本的 vue 时 都会一起发布相应版本的 vue templa
  • Rails 其中 has_many 不为空

    My Campaign模型有很多Response 我想做的是这样的搜索Campaign where not responses nil 基本上返回所有有响应的活动的列表 最好的方法是什么 您可以通过查询来完成join Campaign jo
  • 有什么理由使用 isset() 吗?

    我为什么要使用if isset var 而不仅仅是if var 它似乎做了同样的事情 只是需要额外的处理 谢谢 Reason 原因是 isset 将返回布尔值 并且当您检查变量是否存在并继续时不会引发警告 此外 变量的值也有可能为零 fal
  • 为什么 C 会在 while 循环中卡住?

    当我编译并运行这段代码 它是一个更大的程序的一部分 时 Linux 已经完成了一半while循环 然后就停止工作 下面的代码打印time 0然后挂起 不执行任何其他操作 直到我暂停该进程 到底为什么它会打印time 0但不是下面的健全性检查
  • htaccess 中的重定向规则

    我的新闻有旧网址 例如http example com mynew 35 this is the title http example com mynew 35 this is the title 其中 35 是新闻的 ID 现在我的新网址
  • 列表理解和 len() 与简单的 for 循环

    我应该获取一个单词列表 并计算其中长度为 2 个或更多字符且第一个字符和最后一个字符相等的所有单词 我想出了两种可能的解决方案 result 0 for word in words if len word gt 2 and word 0 w
  • 是否可以将输入数组分散到参数中?

    因此 Promise all 将数组作为值传递到函数中 我更希望它将数组值作为参数传递 假设我有这个功能 function printData a b c console log a b c 我想 Promise all 1 2 3 the
  • GraphDB Free 8.8 Sparql INSERT 返回 400。不支持 INSERT?

    我正在使用 GraphDB Free 并尝试使用 sparql 将一些三元组插入到存储中 该查询看起来像一个简单的 INSERT Some Prefixes INSERT DATA subject predicate object 我使用
  • 无法访问文件“$libdir/plpgsql”:没有这样的文件或目录

    我不知所措 在本地 Postgres 服务器 postgres app Mac OS X 10 7 中创建存储过程时遇到问题 也是如此 psql psql 9 3 0 Type help for help dchaston CREATE O
  • MSSQL2008 - Pyodbc - 以前的 SQL 不是查询

    我无法弄清楚以下代码有什么问题 语法没问题 用 SQL Management Studio 检查 我可以按照我应该的方式访问 这样也可以工作 但由于某种原因 一旦我尝试通过 PyODBC 创建表 它就会停止工作 import pyodbc
  • 2D 模式搜索算法

    我需要学习二维模式搜索算法 非常感谢提示和链接 更重要的是 给定一个 M m n 矩阵 其值在 K 中 example 000000000000000001000000 010100010010 M K 0 1 010100010001 1
  • 覆盖私有方法时的奇怪行为

    考虑下面的代码 class foo private function m echo foo gt m public function call this gt m class bar extends foo private function
  • 为什么这不能用作数组成员资格测试? [复制]

    这个问题在这里已经有答案了 gt gt gt 5 in 1 2 3 4 False False 我知道这是一种奇怪的测试会员资格的方式 而且 gt gt gt 5 not in 1 2 3 4 True 是 正确 的方式 令我困惑的是它的行
  • TypeScript 中的“as const”是什么意思?它的用例是什么?

    我很困惑as const投掷 我查了一些文档和视频 但没有完全理解 我关心的是as const下面代码中的意思是什么 使用它有什么好处 const args 8 5 as const const angle Math atan2 args
  • 基于时间列表中的序列岛交叉表行

    光是写出问题标题就伤了我的头 请多多包涵 请参阅以下 DDL 和虚拟数据 CREATE TABLE dbo tbl Example Date date NULL Time time 0 NULL Branch varchar 3 NULL