在我的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中可以吗?
答案 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