Tôi đang cố gắng tìm cách để có được tất cả các nút tổ tiên của một nút đã cho bằng cách sử dụng HVELyID. Mọi giải pháp tôi từng thấy khi sử dụng HVELyID dường như sử dụng CTE hoặc biến. Có cách nào để làm điều này bằng cách sử dụng một câu lệnh chọn không?
Để làm cho mọi thứ đơn giản hơn:
CREATE TABLE Employee
(
EmpId INT PRIMARY KEY IDENTITY,
EmpName VARCHAR(100) NOT NULL,
Position HierarchyID NOT NULL
)
INSERT INTO Employee (EmpName, Position)
VALUES ('CEO', '/'),
('COO', '/1/'),
('CIO', '/2/'),
('CFO', '/3/'),
('VP Financing', '/3/1/'),
('Accounts Receivable', '/3/1/1/'),
('Accountant 1', '/3/1/1/1/'),
('Accountant 2', '/3/1/1/2/'),
('Accountant 3', '/3/1/1/3/'),
('Accounts Payable', '/3/1/2/'),
('Accountant 4', '/3/1/2/1/'),
('Accountant 5', '/3/1/2/2/'),
('DBA', '/2/1/'),
('VP of Operations', '/1/1/')
một giải pháp CTE là một tuyên bố chọn duy nhất, phải không?
—
Jack nói hãy thử topanswers.xyz
Nói chung, các giải pháp tôi đã thấy bằng cách sử dụng CTE là đệ quy, điều này gây nhầm lẫn. Ngoài ra, có một lựa chọn để xác định CTE (thay vì hai cho đệ quy) và một để lấy dữ liệu từ nó. Tôi đã tự hỏi nếu có một tuyên bố duy nhất có thể được thực hiện mà không cần sử dụng CTE.
—
Richard