Мастерская доработка 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!

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

комментария 2

  1. kokoko:

    А где тут скрипт SQL?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *