Dit zou de slag moeten slaan:
SELECT X,Y,Z,ROW_NUMBER() OVER (PARTITION BY X,Y,Z ORDER BY X,Y,Z)
FROM TABLE1
De ROW_NUMBER() tikt omhoog voor elke waarde in de groep X,Y,Z, en reset bij een volgende groep. De ORDER BY-clausule wordt gebruikt om te definiëren in welke volgorde het moet worden aangevinkt, en kan naar wens worden gewijzigd. Dit is een van de analytische functies die Oracle biedt en kan erg handig zijn.