Sono nuovo allo sviluppo di SQL Server. La maggior parte della mia esperienza è stata fatta con Oracle.Query ricorsiva di SQL Server
supporre che abbia la seguente tabella che contiene appuntamenti oggetti
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)
Un appuntamento può essere rimandata così, quando questo accade, una nuova riga viene creata sul tavolo con il campo PrevAppointmentID contenente l'ID dell'originale Appuntamento.
Vorrei fare una query per ottenere la cronologia degli appuntamenti di una persona. Ad esempio, se l'appuntamento con ID = 1 viene posticipato due volte e questi posticipi hanno creato appuntamenti con ID = 7 e ID = 12 per lo stesso PersonID, vorrei fare una query che restituisca i seguenti risultati:
AppointmentID PrevAppointmentID
----------------- ----------------------
1 NULL
7 1
12 7
Se si utilizza Oracle, ricordo che una cosa del genere può essere ottenuta usando la clausola CONNECT BY PRIOR.
C'è un modo per fare una query per raggiungere questi risultati?
Sto usando SQL Server 2005/2008.
grazie in anticipo