Мастерская доработка SQL-запроса
Задача не для джуна, скажем так.
У клиента из второй базы получались данные о продажах Т2Исх, которые суммировались с данными о продажах ТФЛ из первой базы.
Но в отчет попадали только те лица, у которых в эти даты были продажи в первой базе. Если продажа была только во второй базе, данные не объединялись.
Физические лица соотносились по наименованию.
Было:
ВЫБРАТЬ РАЗЛИЧНЫЕ Т.Дата, Т.Ответственный, Т.Физлицо, Т.Физлицо.Наименование КАК ФизлицоНаименование, Т2Исх.Сумма2 ИЗ ТФЛ КАК Т ЛЕВОЕ СОЕДИНЕНИЕ Т2Исх КАК Т2Исх ПО (ПОДСТРОКА(Т.ФизлицоНаименование, 1, 1024) = ПОДСТРОКА(Т2Исх.ФизлицоНаименование, 1, 1024)) И Т.Дата = Т2Исх.Дата
Стало:
ВЫБРАТЬ РАЗЛИЧНЫЕ ЕСТЬNULL(Т.Дата, Т2Исх.Дата) КАК Дата, ЕСТЬNULL(Т.Ответственный, НЕОПРЕДЕЛЕНО) КАК Ответственный, ЕСТЬNULL(Т.Физлицо, Т2.Ссылка) КАК Физлицо, ЕСТЬNULL(Т.Физлицо.Наименование, Т2.Ссылка.Наименование) КАК ФизлицоНаименование, ЕСТЬNULL(Т2Исх.Сумма2, 0) КАК Сумма2 ИЗ ТФЛ КАК Т ПОЛНОЕ СОЕДИНЕНИЕ Т2Исх КАК Т2Исх ПО (ПОДСТРОКА(Т.ФизлицоНаименование, 1, 1024) = ПОДСТРОКА(Т2Исх.ФизлицоНаименование, 1, 1024)) И Т.Дата = Т2Исх.Дата ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК Т2 ПО (ПОДСТРОКА(Т2.Наименование, 1, 1024) = ПОДСТРОКА(Т2Исх.ФизлицоНаименование, 1, 1024)) ГДЕ НЕ ЕСТЬNULL(Т.Физлицо, Т2.Ссылка) ЕСТЬ NULL
Кстати, пришлось повозиться с отбором. Сравнение с NULL в запросах не работает, только ЕСТЬ NULL!
А где тут скрипт SQL?
примерно там, где FULL JOIN