webForumDet fria alternativet

Select två av varje kategori

Databaser & SQL

1 svar · 271 visningar · startad av Troxy

Medlem sedan mars 20041 505 inlägg
Frågan#1

Hej,
jag är i behov av en ganska udda select-fråga för SQL Server 2000.
Tänk er en tabell som innehåller objekt (ex. djur och frukter) där varje objekt tillhör en kategori och har ett datum:

namn      kategori    datum
--------------------------------
äpple     20          2007-08-30
päron     20          2007-08-29
apelsin   20          2007-08-28
aprikos   20          2007-08-27
hund      10          2007-08-30
katt      10          2007-08-29
fisk      10          2007-08-28
kanin     10          2007-08-27

Nu vill jag göra en select som hämtar de två senaste objekten ur varje kategori baserat på datum.
Resultatet ur min fiktiva tabell ovan borde bli:

äpple     20          2007-08-30
hund      10          2007-08-30
päron     20          2007-08-29
katt      10          2007-08-29

Hur löser jag detta? :p
Tacksam för svar!

Medlem sedan dec. 200012 464 inlägg
#2
select * from t as q
  where 2 < (
  select count(*) 
    from t 
   where t.kategori = q.kategori
     and q.datum >= t.datum)
257 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)