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, немного изменив запрос. Я тебе дал идею решения, ты уже сам можешь приспособить ее к своим таблицам.
Ошибка? Это не ошибка, это системная функция.