webForumDet fria alternativet

[MSSQL] Hämta kolumn på samma rad som Max() träffar

Databaser & SQL

1 svar · 446 visningar · startad av Gein

Medlem sedan sep. 20005 700 inlägg
Frågan#1

Jag har en tabell (kalla den t1) som ser ut som följer:

[B]ProjektId	KlartDatum			AktivitetId[/B]
3		2007-09-19 00:00:00.000		4
43		2007-09-05 00:00:00.000		10
43		2007-09-07 00:00:00.000		25
43		2007-09-10 00:00:00.000		44

Nu vill jag få ut en resultatmängd där varje rads ProjektId är unikt och där det senaste datumet hämtas (med gruppering på ProjektId) samt tillhörande AktivitetId för den raden (m.a.p. KlartDatum).

I detta fall skulle resultatmängden vara:

[B]ProjektId	KlartDatum			AktivitetId[/B]
3		2007-09-19 00:00:00.000		4
43		2007-09-10 00:00:00.000		44

Tabellen t1 är i själva verket inte en fast tabell utan en svarsmängd som jag får ut på annat sätt, kanske går det att modifiera ursprungsfrågan för att få ut det jag önskar. Isåfall ser den ut såhär:

SELECT pakt.ProjektId, pakt.KlartDatum, pakt.AktivitetId
FROM Projekt_Aktiviteter pakt 
INNER JOIN Aktiviteter akt ON akt.Id = pakt.AktivitetId 
WHERE akt.Aktivitetstyp = 0 AND pakt.KlartDatum <= GetDate() 
AND pakt.Deleted IS NULL
GROUP BY pakt.ProjektId
Medlem sedan dec. 200012 464 inlägg
#2
select *
  from t1 as q
 where klartDatum = 
  (select max(klartdatum)
      from t1
     where t1.projektid = q.projektid)
250 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)