Tôi mới phát triển SQL Server. Hầu hết kinh nghiệm của tôi đã được thực hiện với Oracle.Truy vấn đệ quy SQL Server
cho rằng tôi đã theo bảng dưới đây có chứa hẹn đối tượng
CREATE TABLE [dbo].[Appointments](
[AppointmentID] [int] IDENTITY(1,1) NOT NULL,
.......
[AppointmentDate] [datetime] NOT NULL,
[PersonID] [int] NOT NULL,
[PrevAppointmentID] [int] NULL,
CONSTRAINT [PK_Appointments] PRIMARY KEY CLUSTERED ([AppointmentID] ASC)
Một cuộc hẹn có thể bị trì hoãn như vậy, khi điều này xảy ra, một dòng mới được tạo ra trên các bảng với các lĩnh vực PrevAppointmentID chứa ID của bản gốc Cuộc hẹn.
Tôi muốn thực hiện truy vấn để có được lịch sử của cuộc hẹn Người. Ví dụ: nếu appoinment với ID = 1 bị trì hoãn hai lần và những lần hoãn này đã tạo các cuộc hẹn với ID = 7 và ID = 12 cho cùng một PersonID, tôi muốn thực hiện truy vấn trả về các kết quả sau:
AppointmentID PrevAppointmentID
----------------- ----------------------
1 NULL
7 1
12 7
Nếu sử dụng Oracle, tôi nhớ rằng có thể có được một thứ như thế này bằng mệnh đề CONNECT BY PRIOR.
Có cách nào để thực hiện truy vấn để đạt được các kết quả này không?
Tôi đang sử dụng SQL Server 2005/2008.
cảm ơn trước