Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Сравнение таблицы самой с собой. Проблема написать запрос  [new]
Sandycorp2010
Member

Откуда:
Сообщений: 2
Добрый день, уважаемые форумчане!
Прошу помощи в следующем вопросе:
необходимо найти все записи у которых есть вышестоящий ([UPPER_ID]) и проверить у смежных записей (смежные по [NUMBER], например запись 120-121 и 121-122 смежные) являются ли они равными @pe1 и/или @pe2. Если такие есть, то вывести [NAME] вышестоящего для них

Входные данные:
@pe1='110'
@pe2='220'

Таблица
ID | NAME | KOD | ON | NUMBER | UPPER_ID
120 | Str1 | 110 | Null | 1 | 123
121 | Str2 | 200 | Null | 2 | 123
122 | Str3 | 220 | Null | 3 | 123
123 | Str2 | 110 | ON | Null | Null

Результат
Str2

Также буду благодарен на ссылки, которые могут помочь в решении данной задачи.
Спасибо
23 ноя 18, 11:49    [21742616]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение таблицы самой с собой. Проблема написать запрос  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2034
Sandycorp2010,

cм. функции Lead\Lag
и/или джойн таблицы самой с собой ID= ID-1
23 ноя 18, 11:53    [21742632]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение таблицы самой с собой. Проблема написать запрос  [new]
Sandycorp2010
Member

Откуда:
Сообщений: 2
StarikNavy,
к сожалению ID=ID-1 не получится. Там они редко будут подряд. Скорее всего хаотично пронумерованы.
23 ноя 18, 11:57    [21742643]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение таблицы самой с собой. Проблема написать запрос  [new]
waszkiewicz
Member

Откуда:
Сообщений: 938
Sandycorp2010,
если LEAD/LAG сервер не умеет - ROW_NUMBER()
23 ноя 18, 12:52    [21742749]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение таблицы самой с собой. Проблема написать запрос  [new]
waszkiewicz
Member

Откуда:
Сообщений: 938
waszkiewicz,

и self join
23 ноя 18, 12:53    [21742751]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение таблицы самой с собой. Проблема написать запрос  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 6076
Sandycorp2010
StarikNavy,
к сожалению ID=ID-1 не получится. Там они редко будут подряд. Скорее всего хаотично пронумерованы.


Ну так найдите способ пронумеровать записи.
23 ноя 18, 13:23    [21742798]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение таблицы самой с собой. Проблема написать запрос  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2034
Sandycorp2010
Скорее всего хаотично пронумерованы.

тогда выбирайте хаотично вышестоящий
смайлик
23 ноя 18, 17:23    [21743156]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение таблицы самой с собой. Проблема написать запрос  [new]
Rigersong
Member

Откуда:
Сообщений: 5
SELECT [NAME]
FROM (
	SELECT *
		, rn = LAG(UPPER_ID) OVER(ORDER BY ID)
	FROM @t
	WHERE KOD <> @pe1 AND KOD <> @pe2
) t
2 янв 19, 17:06    [21777618]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить