将一行复制一定次数,然后每次将 30 分钟添加到时间戳(就像序列一样)

2024-03-15

样本数据:

ID      Location Type   Trip End            Number of periods
1298    Residential     02/01/2022 05:30    48
1298    Residential     03/01/2022 05:30    6
1244    Commercial      31/12/2021 09:00    2
1244    Residential     31/12/2021 10:30    1

本质上,我想根据“周期数”列中的数字复制该行。另外,为每个新的重复行添加 30 分钟。 所以新的第二行将是:

1298    Residential     02/01/2022 06:00    48

所以这是使用表格在雪花中解决的发电机 https://docs.snowflake.com/en/sql-reference/functions/generator.html(有固定输入)结合ROW_NUMBER https://docs.snowflake.com/en/sql-reference/functions/row_number.html然后使用DATEADD https://docs.snowflake.com/en/sql-reference/functions/dateadd.html

我更改了 48 -> 8 以使输出不那么难看。

WITH data(ID, LocationType, TripEnd, NumPeriods) as (
    select COLUMN1, COLUMN2, TO_TIMESTAMP_NTZ(COLUMN3, 'dd/mm/yyyy hh:mi'), COLUMN4 from values
        (1298, 'Residential','02/01/2022 05:30',8),
        (1298, 'Residential','03/01/2022 05:30',6),
        (1244, 'Commercial','31/12/2021 09:00',2),
        (1244, 'Residential','31/12/2021 10:30',1) 
), set_of_nums as (
    SELECT row_number() over (order by null)-1 as rn
    FROM table(generator(ROWCOUNT => 1000))
)
select d.*
    ,dateadd(minute, 30 * s.rn, TripEnd) as range_time
FROM DATA as d
JOIN set_of_nums as s ON d.NumPeriods >= s.rn
ORDER BY 1,3,5
;

这使:

ID LOCATIONTYPE TRIPEND NUMPERIODS RANGE_TIME
1244 Commercial 2021-12-31 09:00:00.000 2 2021-12-31 09:00:00.000
1244 Commercial 2021-12-31 09:00:00.000 2 2021-12-31 09:30:00.000
1244 Commercial 2021-12-31 09:00:00.000 2 2021-12-31 10:00:00.000
1244 Residential 2021-12-31 10:30:00.000 1 2021-12-31 10:30:00.000
1244 Residential 2021-12-31 10:30:00.000 1 2021-12-31 11:00:00.000
1298 Residential 2022-01-02 05:30:00.000 8 2022-01-02 05:30:00.000
1298 Residential 2022-01-02 05:30:00.000 8 2022-01-02 06:00:00.000
1298 Residential 2022-01-02 05:30:00.000 8 2022-01-02 06:30:00.000
1298 Residential 2022-01-02 05:30:00.000 8 2022-01-02 07:00:00.000
1298 Residential 2022-01-02 05:30:00.000 8 2022-01-02 07:30:00.000
1298 Residential 2022-01-02 05:30:00.000 8 2022-01-02 08:00:00.000
1298 Residential 2022-01-02 05:30:00.000 8 2022-01-02 08:30:00.000
1298 Residential 2022-01-02 05:30:00.000 8 2022-01-02 09:00:00.000
1298 Residential 2022-01-02 05:30:00.000 8 2022-01-02 09:30:00.000
1298 Residential 2022-01-03 05:30:00.000 6 2022-01-03 05:30:00.000
1298 Residential 2022-01-03 05:30:00.000 6 2022-01-03 06:00:00.000
1298 Residential 2022-01-03 05:30:00.000 6 2022-01-03 06:30:00.000
1298 Residential 2022-01-03 05:30:00.000 6 2022-01-03 07:00:00.000
1298 Residential 2022-01-03 05:30:00.000 6 2022-01-03 07:30:00.000
1298 Residential 2022-01-03 05:30:00.000 6 2022-01-03 08:00:00.000
1298 Residential 2022-01-03 05:30:00.000 6 2022-01-03 08:30:00.000
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将一行复制一定次数,然后每次将 30 分钟添加到时间戳(就像序列一样) 的相关文章

随机推荐

  • EF在运行时从Type获取记录列表

    目的 我需要循环所有记录 例如 var records db Set
  • 如何在 Rails 的功能测试中启用页面缓存?

    是否可以打开页面缓存进行功能测试 以下内容不起作用 class ArticlesControllerTest lt ActionController TestCase def setup ActionController Base publ
  • 是否可以获取对象的不可枚举继承属性名称?

    在 JavaScript 中 我们有几种获取对象属性的方法 具体取决于我们想要获取的内容 1 Object keys 它返回对象的所有自己的可枚举属性 即 ECMA5 方法 2 a for in循环 返回对象的所有可枚举属性 无论它们是自己
  • 你如何理解一大块代码?

    我是一名刚刚开始工作的应届大学毕业生 在我的起步阶段 我需要学习很多产品代码 有一些设计文档 但没有多大帮助 您能否提供一些通用技术来浏览和理解庞大的产品代码 特别是 C 运行它doxygen http www doxygen nl 这将生
  • StreamBuilder 子更新在导航后不呈现

    我正在使用扑动StreamBuilder决定向用户显示哪个 根 页面 现在基本上有2种可能性 LoginPage or HomePage 我的应用程序的主要构建方法如下所示 Widget build BuildContext context
  • 在没有 root 权限的 Linux 上安装 gcc

    我可以使用公共图书馆中的计算机 并且我想尝试一些 C 以及其他代码 问题是没有安装 g 并且我无法使用包安装它 因为我没有 root 访问权限 是否有一种 智能 方法可以在主文件夹中创建完整的编程环境 我安装了gcc 我可以编译C代码 另外
  • 错误:yarn start - 错误命令“start”未找到

    我正在尝试学习 React 并且我正在使用一个私人存储库来开始它 I run yarn start在存储库的目录中 但我收到错误消息 yarn run v1 13 0 error Command start not found info V
  • 简单对话框中的 Stackoverflow 异常

    您好 我在这两个对话框中收到 Stackoverflow 异常 Dialog A正在从主对话框类中调用 对话框A有一个选择去Dialog A child and Dialog A child有选择回去Dialog A 但它遇到了 Stack
  • 如何使用Javascript触发CSS“悬停状态”? [复制]

    这个问题在这里已经有答案了 当用户将鼠标悬停在元素上时 CSS 悬停状态 将触发 我们如何使用 Javascript 将元素设置为 悬停状态 是否可以 如果您可以接受使用 focus您可以使用以下命令来代替悬停 var links docu
  • 如何根据条件应用Spring消息转换器?

    我有一个控制器 其响应是驼峰式 json 值 现在我们正在用新版本重写代码 所需的响应位于snake case中 我添加了一个消息转换器并修改了对象映射器来设置setPropertyNamingStrategy PropertyNaming
  • 有没有集成CouchDb和Solr的项目?

    我希望能够使用 Solr 搜索 CouchDB 数据库 有没有提供这样的集成的项目 我还知道 CouchDB Lucene 有没有办法让 Solr 融入其中 Thanks 考虑到它是多么容易 自己推出会更有意义 首先 您需要决定使用哪种 S
  • $.mobile.silentScroll 在 worklight 应用程序中不起作用

    我正在使用 IBM 的 worklight 框架开发一个应用程序 其中我使用 jquery 移动库进行编码 不幸的是 当我使用 mobile silentScroll滚动 它没有效果 它不起作用 有人遇到过这个问题吗 在其他工作中 如何在w
  • PowerShell安装NuGet,显示无法访问互联网,但实际上可以

    我按照中提到的步骤进行操作在代理后面使用 PowerShell http woshub com using powershell behind a proxy 配置我的代理服务器 netsh winhttp set proxy IP Por
  • Pygame 或 Python 中的透明窗口

    我正在尝试为我的游戏制作一个透明窗口作为启动屏幕 图像具有透明度 但我无法使窗口透明 例如在其后面看到屏幕 桌面等 我发现的所有内容都不能使用 pygame 我可以从中提取任何外部库来实现这一点吗 顺便提一句 这完全是一个Linux项目 所
  • Django FileField 在上传后移动文件

    围绕这一主题有几个问题 但我发现没有一个适合我想做的事情 我希望能够将文件上传到模型 并使用 pk 等模型实例属性将该文件保存在一个合适的位置 我知道这些东西会在之后设置model save 所以我需要编写一个自定义保存来执行此操作 但我无
  • 如何配置 docker 文件以像 perl 一样运行 cgi 脚本

    我有这个文件 索引 php Dockerfile conf myawesomesite conf cgi bin helloworld pl 在 conf myawesomesite conf 中
  • PHP 页面加载/刷新到准确位置

    我想做的是通过 href 链接将用户传递到 php 脚本 然后将他们传回与单击链接之前完全相同的位置 就像页面尚未刷新一样 有谁知道这是否或如何可能 谢谢 使用 HTML 您可以得到以下内容 p a href script php Send
  • 如何在 MongoDB 中处理小于 1970 的日期

    我有一个包含 生日 字段的文档 该字段的值也可能低于 01 01 1970 我该如何处理这个问题 例如 birthday gt newMongoDate strtotime 31 10 1968 这将创建一个 生日 值 1 1 1970 1
  • Tomcat 上的 SSL 证书 - 别名无法识别密钥

    想知道是否有人可以告诉我我在哪里搞砸了 我有一个 keytool 创建的密钥库 一个来自 Thawte 的主证书 辅助证书和 ssl 证书 我最初使用 openssl 创建了 CSR 然后使用记录的过程将私钥转换为 PKCS12 以导入到密
  • 将一行复制一定次数,然后每次将 30 分钟添加到时间戳(就像序列一样)

    样本数据 ID Location Type Trip End Number of periods 1298 Residential 02 01 2022 05 30 48 1298 Residential 03 01 2022 05 30