/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Find de to nyeste perioder for hvert mål
Fra : Ryan Dahl


Dato : 24-03-06 23:14

Hej,

jeg arbejder på et simpelt målstyringsprogram, hvor jeg skal trække de
seneste 2 poster for hvert mål, med henblik på at beregne en tendens.

Problemet er, at jeg ikke ved hvordan jeg skal trække de 2 seneste
poster.

Tabellen ser sådan ud:

kpiID   periodID   Actual
Acceleration   2   3
Acceleration   5   4
Speed   1   100
Speed   4   200
Speed   7   220
Speed   9   180
Weight   1   22
Weight   3   32
Weight   7   21
Weight   10   33

Hvis jeg f.eks. vil hente den seneste periode for hvert mål, så ville
jeg sætte en forespørgsel sammen, som ser nogenlunde sådan ud:

SELECT table1.kpiID, table1.periodID, table1.Actual
FROM table1 WHERE table1.periodID = (SELECT max(t.periodID) from
table1 as t WHERE t.kpiID=table1.kpiID);

MEN - hvordan får jeg den næstsidste post med?

Ideelt vil jeg gerne have sammensat en forespørgsel med følgende
felter:

kpiID, periodID_nyest, Actual_nyest, periodID_anden_nyest,
Actual_anden_nyest

Alternativt to poster for hvert mål med følgende felter:
kpiID, periodID, Actual

På forhånd tak.
Ryan

 
 
Ryan Dahl (25-03-2006)
Kommentar
Fra : Ryan Dahl


Dato : 25-03-06 08:23

Hej,

jeg har fået en løsning.

Hvis der er interesserede er dette en mulighed:

SELECT a.kpiID, a.periodID, a.Actual, b.periodID, b.Actual
FROM table1 AS a
LEFT JOIN table1 AS b
ON b.kpiID = a.kpiID
WHERE a.periodID = (SELECT MAX(t.periodID)
FROM table1 AS t
WHERE t.kpiID = a.kpiID)
AND b.periodID = (SELECT MAX(c.periodID)
FROM table1 AS c
WHERE c.kpiID = a.kpiID
AND c.periodID < a.periodID)

mvh
Ryan


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste