Access: En kringlet affære
Undskyld den dårlige overskrift, jeg ved simpelthen ikke hvordan jeg skal forklare det i en overskrift.Jeg har en tabel med data over en række projekter. Hver måned kommer der en ny record for hvert projekt der er åbent den dag.
Tabellen har af vigtige felter disse: Projektnummer, år, måned og salg.
Således kan en record se sådan ud: 68768, 2010, 6, 100.000
Var projektet så åbent i juli 2010, kom der dengang en ny record: 68768, 2010, 7, x (nyt salgstal).
Disse records trækkes fra en stored procedure, hvor man kan angive starttidspunkt og sluttidspunkt. Der er naturligvis masser af projekter, der så hver især har en record for hver måned der har været åbne.
OK, lad os sige, at vi kalder SP'en og beder om alle records fra 2009 01 til 2010 12. Så får vi en masse ud på lad os sige 2000 projekter, ialt 20000 records. Nogle projekter har første record 2009 03 og har så én for hver måned frem til 2010 08. Lad os tage udgangspunkt i dette projekt. Dataene skal ligge til grund for en graf der viser salg med beløb og måned/år på akserne.
Grafen er helt på plads, men den viser lidt forkert, fordi brugerne gerne vil have, at føromtalte projekt der lukker 2010 08 også skal tælles med det resterende af perioden. Med andre ord skal salgs-tallet skal 2010 08 på det pågældende projekt kopieres til en nye records for 09 10 11 og 12. Naturligvis skal der IKKE genereres records for 2009 02 og 2009 01, hvor det godt nok heller ikke optræder.
Jeg er klar over der skal et par queries til, og det er også ok.
Jeg har lavet disse:
Query 1: Trækker alle perioder ud, dvs. den kigger på projekterne og finder alle kombinationer af måned og år.
Query 2: Finder, for hvert projekt, den sidste record (max af år og derefter max af måned), således at jeg har det salgs-tal der skal puttes på de nye records. Denne record virker dog ikke helt som den skal.
Query 3: Fletter Q1 og Q2 sammen og laver en record for hver periode (år og måned) for hvert projekt og putter seneste salgs-tal på.
Query 4: Bruger projekt-tabellen og Q3 med et join. Hvis projekt-tabellens salgs-tal er Null (recorden fandtes ikke) tager den salgs-tallet fra Q3 i stedet.
Udover lidt bøvl i Q2 virker dette efter hensigten, bortset fra én vigtig ting. Den genererer records for ALLE perioder et givent projekt ikke har indenfor perioden. Dvs. starter det i 2009 03, bliver der også lavet for 2009 02 og 2009 01. Det vil jeg gerne undgå...
Nogen der kan hjælpe?