Detta borde göra susen:
SELECT X,Y,Z,ROW_NUMBER() OVER (PARTITION BY X,Y,Z ORDER BY X,Y,Z)
FROM TABLE1
ROW_NUMBER() kommer att markeras för varje värde i gruppen X,Y,Z och återställs vid nästa grupp. ORDER BY-satsen används för att definiera i vilken ordning den ska markeras, och kan ändras till hur du vill. Detta är en av de analytiska funktionerna som Oracle tillhandahåller och kan vara mycket användbar.