19. marts 2001 - 09:52Der er
8 kommentarer og 2 løsninger
Simpel DELETE?
Jeg har følgende SQL sætning:
SELECT Udstyr, MIN(MinTid) AS MinTid, MAX(MaxTid) AS MaxTid, SUM(StopTid) AS StopTid, Taeller FROM MaskinStop WHERE MaxTid > GETDATE() - 1 GROUP BY Udstyr, Taeller
Det sætningen gør er at finde starttidspunktet (MinTid) samt sluttidspunktet (MaxTid) samt den samlede stoptid for nogle produktionsudstyr.
Nu vil jeg så gerne have, at alle de records, som er blevet \"slået sammen\" bliver slettet fra MaskinStop-tabellen. Altså alle records hvor MinTid > MIN(MinTid) og MaxTid < MAX(MaxTid). Hvordan gør jeg det?
I øjeblikket bruger du en GROUP BY, hvor du laver en SUM(StopTid), hvis du så sletter de records, hvor StopTid er andet end 0, så får du et andet resultat... Håber dette er klar tale??
Hvis du vil beregne den samlede StopTid, som MaxTid-MinTid, så er det en anden sag.
Okay - jeg tror jeg er med. StopTid er tidligere blevet beregnet som antal minutter (MaxTid-MinTid).
Problemet er, at der hver time bliver indsat records som fortælle hvor lang tid de forskellige udstyr har stået stille (StopTid), samt i hvilket tidsrum (MinTid til MaxTid). Hvis et udstyr så står stille i mere end en time kommer der jo flere records i tabellen. Med ovenstående SQL sætning vil jeg så slå dem sammen til et enkelt stop. Når jeg så gør det, behøver jeg selvfølgelig ikke alle de records som nu er blevet lagt sammen til et enkelt.
Det er ikke så meget pointene, men mere opgaven som giver mig problemer... ;-)
Du har en tabel med tider, som du vil \"slå sammen\", men du har bare det problem at selv om du fjerner de mellemliggende records, så vil du stadig have 2 records pr. stop.
Et hvor MinTid = Den mindste tid og een hvor MaxTid = Den største tid, de ligger jo ikke i samme record, derfor er du nødt til at lave et eller andet, som involverer flere forespørgseler; Ihvertfald een UPDATE og een DELETE, som skal køres i en procedure.
Jeg kender ikke til MS SQL, og kan derfor ikke gå i en mere præcis dialog på dette emne.
Det hjalp desværre ikke så meget :-( Men du må meget gerne smide et svar, så får du lige lidt...
Jeg har gjort det på en anden (og måske lidt dummere) måde. Jeg har lavet en hjælpetabel hvor jeg så slå stoppene sammen i direkte fra MaskinStop-tabellen. Derefter sletter jeg de gamle stop fra MaskinStop-tabellen og sætter alle de \"sammenslåede\" records ind i MaskinStop. Thats it...
Men kom lige med et svar, så får du et par points...
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.