Hvordan? Bemærk, at det KUN er den nyeste transaktion for hvert projekt, som er interessant (id=1 og id=4 i transaktioner). Kalkulationen i Procent er ganske enkelt forbrug1/2/3 divideret med forbrugmax1/2/3 gange med 100.
Der må gerne være to forespørgsler, men det hele skulle gerne laves i rent SQL.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Hej Søren, Du kan lave det via 2 SQL's. Først laver du et view som giver dig maxdate pr projekt:
SELECT Transaktioner.ProjektID, Max(Transaktioner.dato) AS MaxOfdato FROM Transaktioner GROUP BY Transaktioner.ProjektID; Gem dette som qMaxDate.
Derefter selekterer du på basis af de to tabeller samt det nye view:
SELECT Projekter.projektnavn, [forbrug1]/[forbrugmax1]*100 AS Pct1,[forbrug2]/[forbrugmax2]*100 AS Pct2,[forbrug3]/[forbrugmax3]*100 AS Pct3 FROM (Projekter INNER JOIN qMaxDate ON Projekter.id = qMaxDate.ProjektID) INNER JOIN Transaktioner ON (qMaxDate.MaxOfdato = Transaktioner.dato) AND (Projekter.id = Transaktioner.ProjektID);
Denne løsning giver dig alle beregninger på 2 linier, 1 linie pr projekt.
Hvis du vil have det splittet op i 6 linier kan dette også lade sig gøre ved at den anden sql laves som union af 3 sql'er.
SELECT Projekter.projektnavn, "forbrug1", [forbrug1]/[forbrugmax1]*100 AS Pct FROM (Projekter INNER JOIN qMaxDate ON Projekter.id = qMaxDate.ProjektID) INNER JOIN Transaktioner ON (qMaxDate.MaxOfdato = Transaktioner.dato) AND (Projekter.id = Transaktioner.ProjektID) UNION ALL SELECT Projekter.projektnavn, "forbrug2", [forbrug2]/[forbrugmax2]*100 FROM (Projekter INNER JOIN qMaxDate ON Projekter.id = qMaxDate.ProjektID) INNER JOIN Transaktioner ON (qMaxDate.MaxOfdato = Transaktioner.dato) AND (Projekter.id = Transaktioner.ProjektID) UNION ALL SELECT Projekter.projektnavn, "forbrug3",[forbrug3]/[forbrugmax3]*100 FROM (Projekter INNER JOIN qMaxDate ON Projekter.id = qMaxDate.ProjektID) INNER JOIN Transaktioner ON (qMaxDate.MaxOfdato = Transaktioner.dato) AND (Projekter.id = Transaktioner.ProjektID);
Kunne jeg få dig til at sortere den så der først sorteres på projekt, og dernæst på forbrug, så den passer helt nøjagtigt. Undskyld jeg er lidt pedantisk, men forespørgsel skal sendes til et grafmodul, og den kokser, hvis den ikke kommer i helt nøjagtigt format.
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.