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

时间:2013-06-25 18:03:05

标签: c# asp.net sql-server

在我的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的第三列。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 。但我希望以某种方式生成这个值:

for(i = 0; i< 10; ++ i)Time = @InitialTime + i * Interval

例如:

@InitialTime

所以我传递{{1}} param,并根据它生成时间字段,并且有一些间隔......

在MSSQL中可以吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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