Tôi đang cố gắng thực hiện những gì tôi tin là một đệ quy khó khăn bằng cách sử dụng một CTE là SQL Server 2008. Tôi không thể có vẻ quấn quanh đầu của tôi.SQL Server 2008 CTE đệ quy
Trong các ví dụ bên dưới, bạn có thể giả định độ sâu cố định là 3 ... không có gì sẽ thấp hơn mức đó. Trong cuộc sống thực, độ sâu là "sâu hơn" nhưng vẫn cố định. Trong ví dụ này, tôi đã cố gắng đơn giản hóa nó một số.
Dữ liệu đầu vào của tôi giống như dưới đây.
ID PARENT_ID NAME DEPTH
------------------------------------------
1 NULL A 1
2 1 B 2
3 2 C 3
4 1 D 2
Đầu ra của CTE của tôi phải là bảng sau đây.
LEVEL1_ID LEVEL2_ID LEVEL3_ID LEVEL1_NAME LEVEL2_NAME LEVEL3_NAME
--------------------------------------------------------------------------------
1 NULL NULL A NULL NULL
1 2 NULL A B NULL
1 2 3 A B C
1 4 NULL A D NULL
Nếu tôi có thể lấy cột ID ở đầu ra, tôi có thể ánh xạ tới tên trong bảng tra cứu.
Tôi cũng đang mở các cách khác để hoàn thành việc này, bao gồm sử dụng SSIS.
Tôi không thể hiểu những gì logic bạn đang áp dụng bằng cách nhìn vào đầu ra của bạn. Tôi nghĩ dòng cuối cùng phải là '/ B/D' vì id mẹ của' D' là 2 nghĩa là 'B' – IsmailS
vừa cập nhật câu hỏi. lấy làm tiếc. – thomas
Một lần nữa. Trong hàng # 4, Tại sao bạn cần Level1_ID là '1' khi id cha của nó là 2? – IsmailS