Ik heb een tabel met allerlei gegevens, laten we deze gewoon "gegevens" noemen.
Het bevat een soort historiek ter verduidelijking.
bvb:
gegevens.klant
gegevens.datum
gegevens.product
gegevens.aantal
Nu is het de bedoeling dat ik van alle klanten de laatste 5 verkochte producten krijg.
Ik kan niet werken met een ingegegeven datum, want voor klant X is de laatste v/d 5 verkopen misschien nogmaar van begin deze week, terwijl dat van klant Y misschien al van vorige jaar geleden is.
Wat ik zelf heb (maar wat niet werkt)
Maar deze werkt niet want hij herkent x.klant niet op de volgende lijn in de subquery.
Het bevat een soort historiek ter verduidelijking.
bvb:
gegevens.klant
gegevens.datum
gegevens.product
gegevens.aantal
Nu is het de bedoeling dat ik van alle klanten de laatste 5 verkochte producten krijg.
Ik kan niet werken met een ingegegeven datum, want voor klant X is de laatste v/d 5 verkopen misschien nogmaar van begin deze week, terwijl dat van klant Y misschien al van vorige jaar geleden is.
Wat ik zelf heb (maar wat niet werkt)
SQL:
1
2
3
4
5
6
7
8
9
10
| SELECT x.klant, x.product, x.aantal FROM gegevens x WHERE x.datum IN ( SELECT * FROM ( SELECT DISTINCT y.datum FROM gegevens y WHERE y.klant = x.klant ORDER BY y.datum DESC) WHERE ROWNUM <= 5) ORDER BY x.klant, x.product |
Maar deze werkt niet want hij herkent x.klant niet op de volgende lijn in de subquery.
SQL:
1
| WHERE y.klant = x.klant |