0

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

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

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

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

for(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 中可以吗?

4

2 回答 2

1

试试这个,它应该工作:

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
于 2013-06-25T18:24:14.047 回答
0

我根本不是 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
于 2013-06-25T18:21:58.113 回答