Avatar billede stanislavsky Praktikant
09. september 2013 - 21:27 Der er 2 kommentarer og
1 løsning

Latest record

Følgende sql:

select AwayData.FTHG+AwayData.FTAG,
Match.MatchId,(AwayData.Date)

from Awaydata
    inner Join Match on AwayData.AwayTeam = Match.AwayTeam
                        and Awaydata.Div = Match.Div


giver følgende udtræk:

4    696273    2013-01-30 00:00:00.000
3    696273    2013-01-19 00:00:00.000
4    696273    2012-12-29 00:00:00.000
1    696294    2013-02-09 00:00:00.000
1    696294    2013-01-29 00:00:00.000
5    696294    2013-01-12 00:00:00.000

Jeg ønsker nu seneste record for hvert matchId (696273 og 696294) og jeg har prøvet at flette følgende ind forskellige steder:

and (AwayData.Date)  = (SELECT max(AwayData.DATE) FROM AwayData)

Kan I hjælpe???
Avatar billede Slettet bruger
10. september 2013 - 09:46 #1
Brug Analytic Functions:

select * from (
select AwayData.FTHG+AwayData.FTAG,
Match.MatchId,AwayData.Date
,row_number() over(partition by Match.MatchId order by AwayData.Date) Nr
from Awaydata
    inner Join Match on AwayData.AwayTeam = Match.AwayTeam
                        and Awaydata.Div = Match.Div
) s1
where s1.Nr = 1
Avatar billede Slettet bruger
10. september 2013 - 09:48 #2
På Oracle findes KEEP DENSE_RANK som gør det lidt mere elegant men det findes vist ikke på MS SQL.
10. september 2013 - 13:36 #3
Hvordan med:

SELECT a.FTHG + a.FTAG, M.MatchId, MAX(a.Date)
FROM AwayData a
JOIN Match m ON a.AwayTeam = m.AwayTeam AND a.Div = m.Div
GROUP BY m.MatchId

Ud over den foreslåede løsning, at søge på MAX(AwayData.Date) og GROUP BY Math.MatchId forslår jeg at skrive det kortere og derved mere overskueligt ved at give tabellerne alias'er (øgenavne) og ved at bruge, at JOIN giver samme resultat som INNER JOIN.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester