将结果从一个表插入到另一个表,每个插入的行都有连续的日期

本文关键字:插入 结果 日期 连续 另一个 一个 | 更新日期: 2023-09-27 18:19:56

在我的asp.net应用程序中,我有带有以下插入查询的SqlDataSource:

INSERT INTO Invitations (PatientId, PlanId)
SELECT TOP 10 Patients.Id, @PlanId
FROM Patients

所以基本上它从Patients表中得到10行,并将它们(某些值)插入到Invitations表中。@PlanId是传递给SqlDataSource的附加参数。

我需要的是将值插入到第三列Time中,该列的类型为time(0), not null。但我希望这个值以某种方式生成:

对于(i=0;i<10;++i)时间=@InitialTime+i*间隔

例如:

row 1: PatientId = 0; PlanId = 555; Time = 12:00
row 2: PatientId = 1; PlanId = 555; Time = 12:05
row 3: PatientId = 2; PlanId = 555; Time = 12:10

因此,我传递了@InitialTime参数,并在此基础上以一定的间隔生成了时间字段。。。

在MSSQL中可能吗?

将结果从一个表插入到另一个表,每个插入的行都有连续的日期

试试这个,它应该可以工作:

INSERT INTO Invitations (PatientId, PlanId, [Time])
SELECT TOP 10 
  Patients.Id, 
  @PlanId, 
  DATEADD(MINUTE,(ROW_NUMBER() OVER (ORDER BY Patients.Id) -1) * 5 ,@InitialTime ) AS [Time]
FROM Patients

我根本不是MS-SQL用户,

这个伪代码可能有助于

CREATE PROCEDURE InsertFromOtherTable
AS
DECLARE my_cur CURSOR FOR SELECT TOP 10 Patients.Id, @PlanId FROM Patients
DECLARE @startTime DATETIME, @interval INT
OPEN my_cur
while (read_one_row_from_cursor)
loop 
   -- insert the data into other table
   -- increment the timer
   -- continue loop to next row
end loop;
CLOSE my_cur