如何在 SQL 中编写存储过程以填充某些时间戳中的空值

How to write a Stored Proc in SQL to fill Null values in certain timestamps

让我用简短的方式描述一下。事情是这样的 我在 MySql 中有一个 table 它有 8 列。第一列是“时间戳”,它有一些时间读数,间隔为 10 分钟(比如晚上 8 点、晚上 8 点、晚上 8 点等),用于选定的日期范围。其余列提供该特定时间戳的数据。所有这些时间戳和数据都是通过 ASP.Net 微服务生成的,并通过 IIS 托管。

好的,现在如果服务错过了某些时间间隔,则不会显示整行。
例:读到晚上8点后,直接有晚上9点的读数,也就是说我们没有8点10分、8点20点、8点30点等中间数据。

现在的问题是,我需要在 SQL 中编写一个存储过程,它可以在同一个 table 中生成所有缺失的时间戳,并且可以将其他列填充为 Null .

这里有一个table为了更好的理解:

  1. 我有:
Time Stamp Data1 Data 2 So on.......
8.00pm 1234 6758 .............
8.10pm 5768 4658 .............
9.00pm 6754 8674 .............
  1. 我想做的事情:
Time Stamp Data1 Data 2
8.00pm 1234 6758
8.10pm 5768 4658
8.20pm NULL NULL
8.30pm NULL NULL
8.40pm NULL NULL
8.50pm NULL NULL
9.00pm 6754 8674

任何人都可以帮助我吗?我知道你们可以。

我建议您创建一个 table,每天都有可用的时间段。

create table apts (
tslot varchar(10),    
Data1 int,    Data2   int);
insert into apts values
('08:00', 1234,   6758),  
('08:10', 5768,   4658),  
('09:00', 6754,   8674);

3 行受影响

create table slots( tim varchar(10));
insert into slots values
('08:00'),('08:10'),('08:20'),
('08:30'),('08:40'),('08:50'),
('09:00');

7 行受影响

select tim slot,data1,data2
from apts 
right join slots on tslot = tim;
slot  | data1 | data2
:---- | ----: | ----:
08:00 |  1234 |  6758
08:10 |  5768 |  4658
08:20 |  null |  null
08:30 |  null |  null
08:40 |  null |  null
08:50 |  null |  null
09:00 |  6754 |  8674

db<>fiddle here