CREATE TABLE [dbo].[T_JobStruct]( [PK_JobStruct] [bigint] IDENTITY(1,1) NOT NULL, [Title] [varchar](50) NULL, [FK_Parent] [bigint] NULL, [Name] [varchar](50) NULL, CONSTRAINT [PK_T_JobStruct] PRIMARY KEY CLUSTERED ( [PK_JobStruct] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO INSERT INTO dbo.T_JobStruct (Title, FK_Parent, Name) VALUES ('El Cheffe', NULL, 'Huber') INSERT INTO dbo.T_JobStruct (Title, FK_Parent, Name) VALUES ('Abteilungsleiter Dev', 1, 'Müller') INSERT INTO dbo.T_JobStruct (Title, FK_Parent, Name) VALUES ('Abteilungsleiter Admin', 1, 'Schmidt') INSERT INTO dbo.T_JobStruct (Title, FK_Parent, Name) VALUES ('Admin', 3, 'Fischer') INSERT INTO dbo.T_JobStruct (Title, FK_Parent, Name) VALUES ('Admin', 3, 'Weber') INSERT INTO dbo.T_JobStruct (Title, FK_Parent, Name) VALUES ('Developer', 2, 'Wagner') INSERT INTO dbo.T_JobStruct (Title, FK_Parent, Name) VALUES ('Developer', 2, 'Hoffmann') INSERT INTO dbo.T_JobStruct (Title, FK_Parent, Name) VALUES ('Developer', 2, 'Meier'); WITH TEMP (Pk, Parent_Pk, Title, Name, Iteration) AS ( SELECT Pk_JobStruct, Fk_Parent, Title, Name, 0 FROM T_JobStruct WHERE PK_JobStruct = 1 -- el cheffe UNION ALL SELECT sub.Pk_Jobstruct, sub.Fk_Parent, sub.Title, sub.Name, (t.Iteration + 1) FROM T_JobStruct AS sub, temp AS t WHERE t.Pk = sub.Fk_Parent ) SELECT * FROM Temp