Помогите разобраться с левым соединением двух таблиц по условию
ВЫБРАТЬ
ТЧРегСвед.Период КАК Период,
ТЧРегСвед1.Период КАК Период1,
ТЧРегСвед.Ставка КАК Ставка
ИЗ
ТЧРегСвед КАК ТЧРегСвед
ЛЕВОЕ СОЕДИНЕНИЕ ТЧРегСвед КАК ТЧРегСвед1
ПО ТЧРегСвед.Сотрудник = ТЧРегСвед1.Сотрудник
И ТЧРегСвед.Подразделение = ТЧРегСвед1.Подразделение
ГДЕ
ТЧРегСвед.Период < ТЧРегСвед1.Период
В таблице ТЧРегСвед и ТЧРегСвед1 одни и те же данные
Пример:
Период Сотрудник Подразделение Ставка
01.03.2021 0:00:00 Бельдыев Отдел разработки 1 000
02.09.2021 0:00:00 Бельдыев Отдел разработки 2 100
10.09.2021 0:00:00 Бельдыев Отдел разработки 2 300
20.09.2021 0:00:00 Бельдыев Отдел разработки 2 600
29.09.2021 0:00:00 Бельдыев Отдел разработки 3 000
На выходе должно быть
Период Период1 Ставка
01.03.2021 0:00:00 02.09.2021 0:00:00 1 000
01.03.2021 0:00:00 10.09.2021 0:00:00 1 000
01.03.2021 0:00:00 20.09.2021 0:00:00 1 000
01.03.2021 0:00:00 29.09.2021 0:00:00 1 000
02.09.2021 0:00:00 10.09.2021 0:00:00 2 100
02.09.2021 0:00:00 20.09.2021 0:00:00 2 100
02.09.2021 0:00:00 29.09.2021 0:00:00 2 100
10.09.2021 0:00:00 20.09.2021 0:00:00 2 300
10.09.2021 0:00:00 29.09.2021 0:00:00 2 300
20.09.2021 0:00:00 29.09.2021 0:00:00 2 600
29.09.2021 0:00:00 NULL 3000
Не могу получить последнюю строку! Запрос не верен?
ТЧРегСвед.Период КАК Период,
ТЧРегСвед1.Период КАК Период1,
ТЧРегСвед.Ставка КАК Ставка
ИЗ
ТЧРегСвед КАК ТЧРегСвед
ЛЕВОЕ СОЕДИНЕНИЕ ТЧРегСвед КАК ТЧРегСвед1
ПО ТЧРегСвед.Сотрудник = ТЧРегСвед1.Сотрудник
И ТЧРегСвед.Подразделение = ТЧРегСвед1.Подразделение
ГДЕ
ТЧРегСвед.Период < ТЧРегСвед1.Период
В таблице ТЧРегСвед и ТЧРегСвед1 одни и те же данные
Пример:
Период Сотрудник Подразделение Ставка
01.03.2021 0:00:00 Бельдыев Отдел разработки 1 000
02.09.2021 0:00:00 Бельдыев Отдел разработки 2 100
10.09.2021 0:00:00 Бельдыев Отдел разработки 2 300
20.09.2021 0:00:00 Бельдыев Отдел разработки 2 600
29.09.2021 0:00:00 Бельдыев Отдел разработки 3 000
На выходе должно быть
Период Период1 Ставка
01.03.2021 0:00:00 02.09.2021 0:00:00 1 000
01.03.2021 0:00:00 10.09.2021 0:00:00 1 000
01.03.2021 0:00:00 20.09.2021 0:00:00 1 000
01.03.2021 0:00:00 29.09.2021 0:00:00 1 000
02.09.2021 0:00:00 10.09.2021 0:00:00 2 100
02.09.2021 0:00:00 20.09.2021 0:00:00 2 100
02.09.2021 0:00:00 29.09.2021 0:00:00 2 100
10.09.2021 0:00:00 20.09.2021 0:00:00 2 300
10.09.2021 0:00:00 29.09.2021 0:00:00 2 300
20.09.2021 0:00:00 29.09.2021 0:00:00 2 600
29.09.2021 0:00:00 NULL 3000
Не могу получить последнюю строку! Запрос не верен?
По теме из базы знаний
- Неоптимальности вида «план исполнения запроса "испортился"» - поиск и исправление
- Планы запросов - это просто! Разбор оптимизаций запросов PostgreSQL на живых примерах
- Не спеша, эффективно и правильно – путь разработки. Часть 2. Теория
- Пара советов по поиску работы
- Как читать чужой код? Часть 3. Разбор и доработка запросов
Найденные решения
(1)
ВЫБРАТЬ
ТЧРегСвед.Период КАК Период,
ТЧРегСвед1.Период КАК Период1,
ТЧРегСвед.Ставка КАК Ставка
ИЗ
ТЧРегСвед КАК ТЧРегСвед
ЛЕВОЕ СОЕДИНЕНИЕ ТЧРегСвед КАК ТЧРегСвед1
ПО ТЧРегСвед.Сотрудник = ТЧРегСвед1.Сотрудник
И ТЧРегСвед.Подразделение = ТЧРегСвед1.Подразделение
И ТЧРегСвед.Период < ТЧРегСвед1.Период
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
ВЫБРАТЬ
ТЧРегСвед.Период КАК Период,
ТЧРегСвед1.Период КАК Период1,
ТЧРегСвед.Ставка КАК Ставка
ИЗ
ТЧРегСвед КАК ТЧРегСвед
ЛЕВОЕ СОЕДИНЕНИЕ ТЧРегСвед КАК ТЧРегСвед1
ПО ТЧРегСвед.Сотрудник = ТЧРегСвед1.Сотрудник
И ТЧРегСвед.Подразделение = ТЧРегСвед1.Подразделение
И ТЧРегСвед.Период < ТЧРегСвед1.Период
Показать
с этим условием будет
Период Период1 Ставка
01.03.2021 0:00:00 01.03.2021 0:00:00 1 000
01.03.2021 0:00:00 02.09.2021 0:00:00 1 000
01.03.2021 0:00:00 10.09.2021 0:00:00 1 000
01.03.2021 0:00:00 20.09.2021 0:00:00 1 000
01.03.2021 0:00:00 29.09.2021 0:00:00 1 000
02.09.2021 0:00:00 02.09.2021 0:00:00 2 100
02.09.2021 0:00:00 10.09.2021 0:00:00 2 100
02.09.2021 0:00:00 20.09.2021 0:00:00 2 100
02.09.2021 0:00:00 29.09.2021 0:00:00 2 100
10.09.2021 0:00:00 10.09.2021 0:00:00 2 300
10.09.2021 0:00:00 20.09.2021 0:00:00 2 300
10.09.2021 0:00:00 29.09.2021 0:00:00 2 300
20.09.2021 0:00:00 20.09.2021 0:00:00 2 600
20.09.2021 0:00:00 29.09.2021 0:00:00 2 600
29.09.2021 0:00:00 29.09.2021 0:00:00 3 000
Период Период1 Ставка
01.03.2021 0:00:00 01.03.2021 0:00:00 1 000
01.03.2021 0:00:00 02.09.2021 0:00:00 1 000
01.03.2021 0:00:00 10.09.2021 0:00:00 1 000
01.03.2021 0:00:00 20.09.2021 0:00:00 1 000
01.03.2021 0:00:00 29.09.2021 0:00:00 1 000
02.09.2021 0:00:00 02.09.2021 0:00:00 2 100
02.09.2021 0:00:00 10.09.2021 0:00:00 2 100
02.09.2021 0:00:00 20.09.2021 0:00:00 2 100
02.09.2021 0:00:00 29.09.2021 0:00:00 2 100
10.09.2021 0:00:00 10.09.2021 0:00:00 2 300
10.09.2021 0:00:00 20.09.2021 0:00:00 2 300
10.09.2021 0:00:00 29.09.2021 0:00:00 2 300
20.09.2021 0:00:00 20.09.2021 0:00:00 2 600
20.09.2021 0:00:00 29.09.2021 0:00:00 2 600
29.09.2021 0:00:00 29.09.2021 0:00:00 3 000
ВЫБРАТЬ
ТЧРегСвед.Период КАК Период,
ЕстьNull(ТЧРегСвед1.Период, ТЧРегСвед.Период) КАК Период1,
ТЧРегСвед.Ставка КАК Ставка
ИЗ
ТЧРегСвед КАК ТЧРегСвед
ЛЕВОЕ СОЕДИНЕНИЕ ТЧРегСвед КАК ТЧРегСвед1
ПО ТЧРегСвед.Сотрудник = ТЧРегСвед1.Сотрудник
И ТЧРегСвед.Подразделение = ТЧРегСвед1.Подразделение
ГДЕ
ТЧРегСвед.Период < ТЧРегСвед1.Период
Показать
(5)неправильно
На выходе должно быть
Период Период1 Ставка
01.03.2021 0:00:00 02.09.2021 0:00:00 1 000
01.03.2021 0:00:00 10.09.2021 0:00:00 1 000
01.03.2021 0:00:00 20.09.2021 0:00:00 1 000
01.03.2021 0:00:00 29.09.2021 0:00:00 1 000
02.09.2021 0:00:00 10.09.2021 0:00:00 2 100
02.09.2021 0:00:00 20.09.2021 0:00:00 2 100
02.09.2021 0:00:00 29.09.2021 0:00:00 2 100
10.09.2021 0:00:00 20.09.2021 0:00:00 2 300
10.09.2021 0:00:00 29.09.2021 0:00:00 2 300
20.09.2021 0:00:00 29.09.2021 0:00:00 2 600
29.09.2021 0:00:00 NULL 3000
Не могу получить последнюю строку! Запрос не верен?
На выходе должно быть
Период Период1 Ставка
01.03.2021 0:00:00 02.09.2021 0:00:00 1 000
01.03.2021 0:00:00 10.09.2021 0:00:00 1 000
01.03.2021 0:00:00 20.09.2021 0:00:00 1 000
01.03.2021 0:00:00 29.09.2021 0:00:00 1 000
02.09.2021 0:00:00 10.09.2021 0:00:00 2 100
02.09.2021 0:00:00 20.09.2021 0:00:00 2 100
02.09.2021 0:00:00 29.09.2021 0:00:00 2 100
10.09.2021 0:00:00 20.09.2021 0:00:00 2 300
10.09.2021 0:00:00 29.09.2021 0:00:00 2 300
20.09.2021 0:00:00 29.09.2021 0:00:00 2 600
29.09.2021 0:00:00 NULL 3000
Не могу получить последнюю строку! Запрос не верен?
(6) перенеси условие в условия соединения
на выходе
ТЧРегСвед.Период < ТЧРегСвед1.Период
на выходе
ВЫБРАТЬ
ТЧРегСвед.Период КАК Период,
ЕстьNull(ТЧРегСвед1.Период, ТЧРегСвед.Период) КАК Период1,
ТЧРегСвед.Ставка КАК Ставка
ИЗ
ТЧРегСвед КАК ТЧРегСвед
ЛЕВОЕ СОЕДИНЕНИЕ ТЧРегСвед КАК ТЧРегСвед1
ПО ТЧРегСвед.Сотрудник = ТЧРегСвед1.Сотрудник
И ТЧРегСвед.Подразделение = ТЧРегСвед1.Подразделение
И ТЧРегСвед.Период < ТЧРегСвед1.Период
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот