Wie wär's den damit:
Code:
with tmp (Auftrag, Fertigungsauftrag, Teilenummer) as ( values .... ),
 y as (Select Dense_Rank() Over (Partition by Auftrag Order By TeileNummer) 
                lfd, tmp.*
         From tmp) 
Select Auftrag, max(Case When lfd = 1 Then TeileNummer End),
                max(Case When lfd = 2 Then TeileNummer End),
                max(Case When lfd = 3 Then TeileNummer End) 
   from y
   Group By Auftrag
   Having Max(lfd) = 3
   Order By Auftrag;
Birgitta