03. juli 2007 - 12:40Der er
8 kommentarer og 1 løsning
Forespørgsel på forskel i samme kolonne
Jeg har en AccessDB med en masse data omkring et produceret emne. Der er bla en Sluttid, et mm-dd-yy-hh-mm-ss felt der fortæller hvornår emnet er færdigtestet.
Nu vil jeg gerne kunne lave en forespørgsel der returnerer Produktionstiden. Produktionstiden for Emne1 er den tid, i sekunder, der er gået mellem Emne1 og Emne2's Sluttid, Porduktionstiden for Emne2 er så den tid der er gået mellem Emne2 og Emne3's Sluttid.
Navn: Produktionstid (i sek) Emne2 129 Emne3 155 osv
Jeg er klar over at man nok ikke kan regne på emne1 da der ikke er en Sluttid at sammenligne med, men den usikkerhed er jeg villig til at tage med. Jeg kender lidt til DateDiff() funktionen, men kan umiddelbart ikke se hvordan jeg regner på felter i samme kolonne.
<<Produktionstiden for Emne1 er den tid, i sekunder, der er gået mellem Emne1 og Emne2's Sluttid, Porduktionstiden for Emne2 er så den tid der er gået mellem Emne2 og Emne3's Sluttid.>>
Dette skulle selvfølgelig være:
Produktionstiden for Emne2 er den tid, i sekunder, der er gået mellem Emne1 og Emne2's Sluttid, Porduktionstiden for Emne3 er så den tid der er gået mellem Emne2 og Emne3's Sluttid osv.
I have 19411 Emne (units) atm and the DB will grow =)
So I somehow have to compare Emne(n)'s Sluttid with Emne(n-1)'s Sluttid. And the difference in seconds is my production time ProdTid for Emne(n).
That means I have to start at Emne2 since Emne1 has no prior Emne to compare to, but I'm willing to add this uncertainty to the resulting query. I later have to use the results in another query, but that is simple. My problem is this, to get the difference in seconds between the timestamps in the same column.
So I end up with a query that returns the time between this Emne and the one just before it.
Name: ProductionTime (in seconds) Emne23 129 Emne24 155 Emne25 and so on
So basically
SELECT Name, Difference between (EndTime(n) and EndTime(n-1)) As ProductionTime FROM tabel1
DateDiff() seems to only be able to look at 2 fields in the same row. Which means I would have to have a StartTime in teh same Row to compare, which I dont. I have to compare an entry with an entry in the previous row if sorted by time ofc. If not it has to compare with the entry just before timewise.
Without making a prior ORDER BY on the times, they are not in sequence. But Making an Order By query returning only Name and the time in ASCENDING order shouldnt be a problem. I allready did that. So it should be possible to assume they are in sequence when running a query on the ORDERED query.
I will mail u a scaled down version of the DB asap.
SELECT (SELECT Max([DataFine]) FROM Generale L WHERE L.DataFine < G.DataFine) AS LastDataFine, G.DataFine AS ThisDataFine, DateDiff("s",[LastDataFine],[ThisDataFine]) AS ProductionTime FROM Generale AS G ORDER BY G.DataFine;
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.