Имя: Пароль:
IT
 
ms sql как select связать строки в одной таблице
0 DES
 
30.09.18
14:57
MS SQL есть таблица периодов присутствия
ИД нач  кон
1 2000 2002
2 2003 2004
3 2005 2007
4 2010 1015
5 2018 2019
как найти  select-ом периоды отсутствия
2002 2003
2004 2005
2007 2010
2015 2018
1 Попытка1С
 
30.09.18
17:41
в общем случае таблицу присутствия соединить с таблицей годов с условием not in
2 Доктор Манхэттен
 
30.09.18
18:58
(1) Не not in, а

NOT BETWEEN `нач` AND `кон`

Но это плохое решение.
3 Доктор Манхэттен
 
30.09.18
19:00
Лучше так:

SELECT t1.кон, t2.нач
FROM таблица_периодов t1
INNER JOIN таблица_периодов t2
ON t1.кон < t2.нач
AND t1.id + 1 = t2.id
4 Sammo
 
30.09.18
19:01
Вопрос - а зачем искать периоды отсутствия?
5 DES
 
30.09.18
20:25
(3) ид - условно по порядку
я отсортировал для лучшего понимания
6 DES
 
30.09.18
20:26
() в задании первая таблица
вторая - это то что должно получиться
7 Доктор Манхэттен
 
01.10.18
09:09
(5) Если на самом деле не по порядку, то можешь создать виртуальную или временную таблицу в которой будет точно отсортировано по датам, и использовать ее в JOIN, немного изменив запрос. Я тебе дал идею решения, ты уже сам можешь приспособить ее к своим таблицам.
Ошибка? Это не ошибка, это системная функция.