sql - 如何在 SQL Server 的表中重复值?
问题描述
我在 Microsoft SQL Server 中有一个表,它记录了数据更改触发器的一些值。现在,为了显示一些图表,我想从每列(例如)每 10 分钟获取(或重复)一个值。
如果可能的话,我会尽量避免修改表本身的 INSERT 命令。
原表:
Time Stamp---- | A | B | C |
---------------+---+---+---+
01-01-19 10:20 | 1 | 0 | 0 |
01-01-19 15:30 | 0 | 0 | 1 |
01-01-19 22:50 | 0 | 1 | 0 |
02-01-19 01:40 | 1 | 0 | 0 |
...
我想达到的结果:
Time Stamp---- | A | B | C |
---------------+---+---+---+
01-01-19 10:20 | 1 | 0 | 0 |
01-01-19 10:30 | 1 | 0 | 0 |
01-01-19 10:40 | 1 | 0 | 0 |
01-01-19 10:50 | 1 | 0 | 0 |
...
01-01-19 15:30 | 0 | 0 | 1 |
01-01-19 15:40 | 0 | 0 | 1 |
01-01-19 15:50 | 0 | 0 | 1 |
01-01-19 16:00 | 0 | 0 | 1 |
...
解决方案
您可以使用SQL RECURSION和CROSS JOIN
declare @mytable as table(timestamp datetime,A int,B int,C int)
insert into @mytable values
('01-01-19 10:20',1,0,0),('01-01-19 15:30',0,0,1),
('01-01-19 22:50',0,1,0),('01-01-19 01:40',1,0,0)
;with cte as(
select 0 n
union all
select n+10 from cte where n+10 <40)
select dateadd(mi,n,timestamp)[TIMESTAMP],t1.A,t1.B,T1.C
from @mytable t1 cross join cte
order by timestamp
推荐阅读
- c++ - 由于推测性重新排序/Linux RCU 设施导致的竞争条件
- javascript - 我如何获得 e.target?
- openssl - openssl 如何使用 PBKDF2 从密码构造派生密钥?
- sendgrid - StrongGrid - 解析入站电子邮件不起作用
- c++ - 默认模板值和隐式类型转换
- html - 在菜单项之间添加填充 - Shopify 子菜单
- docker - 在heroku构建后推送到docker身份验证错误
- git - 合并后是否有任何理由在本地删除分支?
- suitecrm - SuiteCRM 将数字转换为单词
- google-apps-script - 通过 google appScript 获取今天的日期作为 google 表格中的标题