05. februar 2009 - 13:44Der er
7 kommentarer og 1 løsning
Loop i sp
Hej.
Jeg har brug for hjælp til at lave en stored procedure.
Formålet er at jeg sender en fra- og til-dato til sp'en, og den returnerer et dataset med hver dato i perioden, samt et tal som skal hentes fra en tabel.
F.eks. hvis jeg sender '05-02-2009' og '10-02-2009' ind, vil jeg gerne have følgende ud:
SET @StartTid = '2009-02-05' SET @SlutTid = '2009-02-10'
WHILE (@StartTid <= @SlutTid) BEGIN SELECT @SomeNumber = Count(*) --Ret denne til det tal du vil slå op FROM EnTabel --Ret denne til den tabel du vil slå op i WHERE (TimestampColumn between @StartTid and DATEADD(minute, 1440, @StartTid)) --Ret TimestampColumn til det kolonnenavn i din tabel, som indeholder en datetime INSERT INTO #SearchTimes (Dato, SomeNumber) VALUES (@StartTid, @SomeNumber) SET @StartTid = DATEADD(minute, 1440, @StartTid) END
Jeg har fiflet lidt med sjang's foreslag, og det ser næsten rigtigt ud, men jeg har et problem med løkken:
WHILE (@StartTid <= @SlutTid) BEGIN SELECT @iPladser = Pladser FROM tblPladser WHERE (dato between @StartTid and DATEADD(minute, 1440, @StartTid)) AND Depot = @iDepot INSERT INTO #Data (Dato, Pladser) VALUES (@StartTid, @iPladser) SET @StartTid = DATEADD(minute, 1440, @StartTid) END
Problemstillingen er, at første gang den møder en record i tabellen 'tblPladser' så gentager den tallet de efterfølgende datoer, hvis den ikke finder en post på disse. Mit ønske er at den skal returnere null hvis der ikke er en post.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.