Avatar billede aggie Nybegynder
02. august 2002 - 11:57 Der er 1 kommentar og
1 løsning

overlappende datoer?

jeg har en række felter med et id, et type id, et start tidspunkt og et sluttidspunkt, og vil gerne vide hvor mange enheder af hver type id der har overlappende start/slut tidspunkter - hvordan skulle det se ud?
Avatar billede tmceu Praktikant
02. august 2002 - 17:53 #1
Den slags vil man normalt bruge en cursor til. Nedenstående er et hurtigt eksempel, men du kan forhåbentlig se ideen:


DECLARE MyCursor CURSOR FAST_FORWARD
FOR SELECT MyID, StartDato, SlutDato FROM Test3
ORDER BY StartDato

DECLARE @PrevID int
DECLARE @PrevStart smalldatetime
DECLARE @PrevSlut smalldatetime
DECLARE @ID int
DECLARE @Start smalldatetime
DECLARE @Slut smalldatetime

OPEN MyCursor

FETCH NEXT FROM MyCursor
INTO @ID, @Start, @Slut

WHILE @@FETCH_STATUS = 0
BEGIN

  IF (@PrevID IS NULL AND @PrevStart IS NULL AND @PrevSlut IS NULL)
    BEGIN
        SET @PrevID = @ID
        SET @PrevStart = @Start
        SET @PrevSlut = @Slut
    END
  ELSE
    BEGIN
        IF (@Start < @PrevSlut)
            PRINT 'Følgende er overlappende: ' + CONVERT(VARCHAR, @PrevID) + ' og ' + CONVERT(VARCHAR, @ID)


        SET @PrevID = @ID
        SET @PrevStart = @Start
        SET @PrevSlut = @Slut
    END

  FETCH NEXT FROM MyCursor
  INTO @ID, @Start, @Slut
END

CLOSE MyCursor
DEALLOCATE MyCursor
GO
Avatar billede aggie Nybegynder
04. september 2002 - 01:12 #2
ja, ideen er god nok, jeg endte med at lave noget lignende i pgsql istedet (det kendte jeg i forvejen), men derfor er dit svar jo fint nok :)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester