Eerste 2 regels per Artikel weergeven

Status
Niet open voor verdere reacties.

Jeffie85

Gebruiker
Lid geworden
12 jun 2012
Berichten
106
Ik heb een artikelarchief....
elk artikel heeft meerdere regels met data....
nu wil ik eigenlijk per artikel de laatste 2 regels met data weergeven.....

heb nu dit;

Code:
Select top 2 t1.Artikel 
          ,      t1.Gewicht 
          ,	t1.LaatstGeupdate
          From   Kolom t1 
          order by  t1.LaatstGeupdate DESC

Wat er nu gebeurd is 'überhaupt' van alles de laatste 2 records pakken. Dus ik heb nu maar een resultaat van 2 regels....ipv van elk artikel de laatste 2 records te pakken.....

Wie weet hier raad mee?
bvd.
 
Dan geeft die de melding;
Subquery returned more than 1 value.

Code:
Select top 2 (select t1.Artikel from Kolom t1 )
          ,      t1.Gewicht 
          ,	t1.LaatstGeupdate
          From   Kolom t1 
          order by  t1.LaatstGeupdate DESC
 
Heb wel een code gevonden die er op lijkt wat ik wil, maar hoe pas ik die toe....

fetch first 2 rows only

of iets met with ties ?!
 
Laatst bewerkt:
De select Top 2 hoort in de subquery, niet de Select. Een subquery maakt een voorselectie (pak de laatste twee artikelen op datum) en levert dus een lijst op met twee artikelen per artikel. Die subquery is het filter voor je hoofdquery. daarin wil je dan uiteraard alles zien, je query is al gefilterd.
 
Ik snap wat je bedoelt...maar altijd lastig om onder woorden te brengen :)
Als ik dat doe, krijg ik toch de melding;

Subquery returned more than 1 value.

Code:
Select (select top 2 t1.Artikel from Kolom t1 where t1.LaatstGeupdate desc )
          ,      t1.Gewicht 
          ,	t1.LaatstGeupdate
          From   Kolom t1
 
En als ik dit doe, dan krijg ik geen foutmelding, maar wel alsnog alle records;

Code:
Select *
          From   Kolom t1
          where t1.Artikel IN (select top 2 t1.Artikel from Kolom t1
 
Heb hem nu gevonden, alleen op een hele andere wijze....

Code:
;WITH CTR AS(
select artikel, datum, RANK() OVER(partition by artikel ORDER BY datum DESC) as [r]
from kolom
)
SELECT artikel, datum FROM CTR
WHERE [r] in (1,2)
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan