Заголовок цієї публікації, мабуть, невірний. У мене є таблиця на кшталт наведеної нижче, і мені потрібен SQL, який буде вибирати всі записи, пов'язані з певним значенням. Це таблиця "історії", яка відслідковує значення ідентифікаторів, де я відслідковую, яким раніше був ідентифікатор. Запис 1 розбивається на два і стає 2 і 3, потім, можливо, 2 і 3 зливаються разом і стають 4. Наприклад:
OldID NewID
1 2
1 3
3 4
5 4
2 6
2 7
У наведеному вище прикладі запис 1 став 2 і 3. Запис 4 дорівнює 3, а 5 об'єднані разом. Рекорд 2 був частиною 1 і тепер розділився на 6 і 7.
Отже, якщо ми подивимось на запис NewID = 7, він пов'язаний із записами 2, 6 та 1
NewID 4 пов'язаний з 3, 5, 1 і 2.
Отже, врешті-решт, мені потрібен синтаксис, який обере всі записи, які були пов'язані таким чином з NewID = X. Це можливо? Це як рекурсія?
Відповіді:
0 для відповіді № 1Ви шукаєте щось подібне?
declare @x int = 4
;with cte as (
select oldid, newid from table4 where newid = @x
union all
select t.oldid, t.newid from cte c inner join table4 t on c.OldId = t.newid
) select * from cte