Avatar billede Morten Nybegynder
29. september 2004 - 19:10 Der er 1 løsning

indsætte/opdaterer en tabel fra en anden

Hej

Hjælp søges

Jeg har to tabeller, den første indeholder:
TABEL1
år mdr startdato

TABEL2
år mdr startdato slutdato antal_dage

Jeg skal nu indsætte de 3 kolonner fra tabel1 i tabel2 og samtidig beregne de sidste to kolonner i tabel...

Beregning af slutdato = næste startdato - 1 hvor år og mdr er magen til
Antal dage kan jeg så nok lige klare med en datediff, men jeg ville blive meget glad om nogen kunne give mig et T-sql eks. på hvordan ovenstående kan løses?
Avatar billede spideren Nybegynder
30. september 2004 - 14:55 #1
Hvad med sidste row, der kan ikke udregnes en slutdato??? der er jo ikke en næste start_dato

Løs problemet via cursors, psydo kode

declare @aar int, @mdr int, @start int, @slut int, @days int, @aar_new int, @mdr_new, @start_new

cursor #cur for
  select ar, mdr, start from table1
open #cur
fetch next from #cur into @aar, @mdr, @start
while fetch_status = 0
begin
  set @slut = NULL
  set @days = NULL

  fetch next from #cur into @aar_new, @mdr_new, @start_new
 
  if @@fetch_status = 0 --der er en næste række
  begin
    set @slut = @start_new
    set @days = datediff(...)
    insert into table2 (aar, mdr, start, slut, days) values (@aar, @mdr, @start, @slut, @days)
  end

  set @arr=@arr_new
  set @mdr=@mdr_new
  set @start=@start_new
end

--dette burde klare dit problem, undtaget sidste række..

men HUSK DET ER PSYDO KODE!! DVS. DET SPILLER IKKE LIGE UD
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