/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
smorch 260
10  svend_dyhr 250
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 : 177818
Tips : 31980
Nyheder : 719565
Indlæg : 6410969
Brugere : 218912

Månedens bedste
Årets bedste
Sidste års bedste