Задача

1. TariK 15.01.22 20:15 Сейчас в теме
Даны 2 таблицы (верхние левая и правая). Написать запрос объединения этих таблиц по Контрагенту и статусу, так, что бы сумма корректировки была связана только с одной строкой левой таблицы, т.е. По контрагенту К1 и статусу продажи должна от корректироваться одна строка. Результирующая таблица внизу.
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
13. user1203706 15 15.01.22 23:07 Сейчас в теме
(12)
На вот, занимайся:
ВЫБРАТЬ
	"К1" КАК Контрагент,
	"продажа" КАК СтатусДокумента,
	100 КАК Сумма
ПОМЕСТИТЬ Табличка1

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"К1",
	"продажа",
	30

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"К1",
	"возврат",
	-10

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"К1",
	"возврат",
	-4

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"К2",
	"продажа",
	15

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"К2",
	"возврат",
	-2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"К2",
	"возврат",
	-1
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	"К1" КАК Контрагент,
	"продажа" КАК СтатусДокумента,
	10 КАК Сумма
ПОМЕСТИТЬ Табличка2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"К2",
	"возврат",
	-4
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Табличка1.Контрагент КАК Контрагент,
	Табличка1.СтатусДокумента КАК СтатусДокумента,
	Табличка1.Сумма КАК Сумма,
	АВТОНОМЕРЗАПИСИ() КАК НомерСтроки
ПОМЕСТИТЬ ТабличкаСНомеромСтроки
ИЗ
	Табличка1 КАК Табличка1
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ТабличкаСНомеромСтроки.Контрагент КАК Контрагент,
	ТабличкаСНомеромСтроки.СтатусДокумента КАК СтатусДокумента,
	МИНИМУМ(ТабличкаСНомеромСтроки.НомерСтроки) КАК НомерСтроки
ПОМЕСТИТЬ ТабличкаСНУжнымиНомерамиСтрок
ИЗ
	ТабличкаСНомеромСтроки КАК ТабличкаСНомеромСтроки

СГРУППИРОВАТЬ ПО
	ТабличкаСНомеромСтроки.Контрагент,
	ТабличкаСНомеромСтроки.СтатусДокумента
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Табличка3.Контрагент КАК Контрагент,
	Табличка3.СтатусДокумента КАК СтатусДокумента,
	СУММА(Табличка3.СуммаКорректировки) КАК СуммаКорректировки,
	ТабличкаСНУжнымиНомерамиСтрок.НомерСтроки КАК НомерСтроки
ПОМЕСТИТЬ Результат
ИЗ
	(ВЫБРАТЬ
		ТабличкаСНУжнымиНомерамиСтрок.Контрагент КАК Контрагент,
		ТабличкаСНУжнымиНомерамиСтрок.СтатусДокумента КАК СтатусДокумента,
		0 КАК СуммаКорректировки
	ИЗ
		ТабличкаСНУжнымиНомерамиСтрок КАК ТабличкаСНУжнымиНомерамиСтрок
	
	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		Табличка2.Контрагент,
		Табличка2.СтатусДокумента,
		Табличка2.Сумма
	ИЗ
		Табличка2 КАК Табличка2) КАК Табличка3
		ЛЕВОЕ СОЕДИНЕНИЕ ТабличкаСНУжнымиНомерамиСтрок КАК ТабличкаСНУжнымиНомерамиСтрок
		ПО (ТабличкаСНУжнымиНомерамиСтрок.Контрагент = Табличка3.Контрагент)
			И Табличка3.СтатусДокумента = ТабличкаСНУжнымиНомерамиСтрок.СтатусДокумента

СГРУППИРОВАТЬ ПО
	Табличка3.Контрагент,
	Табличка3.СтатусДокумента,
	ТабличкаСНУжнымиНомерамиСтрок.НомерСтроки
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ТабличкаСНомеромСтроки.Контрагент КАК Контрагент,
	ТабличкаСНомеромСтроки.СтатусДокумента КАК СтатусДокумента,
	ТабличкаСНомеромСтроки.Сумма КАК Сумма,
	ЕстьNULL(Результат.СуммаКорректировки,0) КАК СуммаКорректировки
ИЗ
	ТабличкаСНомеромСтроки КАК ТабличкаСНомеромСтроки
		ЛЕВОЕ СОЕДИНЕНИЕ Результат КАК Результат
		ПО (Результат.НомерСтроки = ТабличкаСНомеромСтроки.НомерСтроки)
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ishelper 15.01.22 20:22 Сейчас в теме
3. glek 119 15.01.22 20:40 Сейчас в теме
(2) Скорее всего тестовое для приема на работу.
4. TariK 15.01.22 20:42 Сейчас в теме
Я всегда в конструкторе все делаю, а руками хрен пойми как писать.
Непонятно как 100 к 10 сделать в объединение. Все остальное понятно
5. user1203706 15 15.01.22 20:43 Сейчас в теме
(1)

Выбрать Клиентос, Статус, Сумма(Сумма),Сумма(Корректировка) ИЗ (
 выбрать 
      клиентос,Статус,Сумма, 0 как Корректировка Из Табличка1
Объединить все
Выбрать  клиентос,Статус,0, СуммаКорректировки Из Табличка2)
Сгруппировать по Клиентос, статус
7. TariK 15.01.22 20:44 Сейчас в теме
(5)
Непонятно как 100 к 10 сделать в объединение. Все остальное понятно
6. TariK 15.01.22 20:43 Сейчас в теме
Понятно что к первому К1 одной таблице, первое К1 другой, синтаксис руками как писать?
8. user1203706 15 15.01.22 20:49 Сейчас в теме
(7) если в табличке есть номер строки, то то получить минимум(номерстроки) клиентос статус сгруппировать по клиентос, статус, положить во времянку, к этой табличке объединение как в (5) и потом исходная табличка + левое соедиение к этому по клиентосу, номеру строки и статусу
11. TariK 15.01.22 21:32 Сейчас в теме
12. TariK 15.01.22 22:08 Сейчас в теме
(8)
Так?

ВЫБРАТЬ
	МИНИМУМ(н/с),
	Контрагент,
	СтатусОперации, 
	Сумма
ПОМЕСТИТЬ ВременнаяТаблица
ИЗ
	ТаблицаРасчетов

СГРУППИРОВАТЬ ПО
	Контрагент,
	СтатусОперации,
	Сумма
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	н/с,
	Контрагент,
	СтатусОперации, 
	Сумма

ПОМЕСТИТЬ ВременнаяТаблица1
ИЗ
	ВременнаяТаблица КАК ВременнаяТаблица
		ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаКорректировки 

ПО (Контрагент  = Контрагент) И
(Статус= СтатусОперации) И
(РеализацияТоваровУслугТовары.НомерСтроки =  н/с)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	0,
	Контрагент,
	Статус,
	СуммаКорректирвоки
ИЗ
	ТаблицаКорректировки
Показать
13. user1203706 15 15.01.22 23:07 Сейчас в теме
(12)
На вот, занимайся:
ВЫБРАТЬ
	"К1" КАК Контрагент,
	"продажа" КАК СтатусДокумента,
	100 КАК Сумма
ПОМЕСТИТЬ Табличка1

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"К1",
	"продажа",
	30

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"К1",
	"возврат",
	-10

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"К1",
	"возврат",
	-4

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"К2",
	"продажа",
	15

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"К2",
	"возврат",
	-2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"К2",
	"возврат",
	-1
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	"К1" КАК Контрагент,
	"продажа" КАК СтатусДокумента,
	10 КАК Сумма
ПОМЕСТИТЬ Табличка2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"К2",
	"возврат",
	-4
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Табличка1.Контрагент КАК Контрагент,
	Табличка1.СтатусДокумента КАК СтатусДокумента,
	Табличка1.Сумма КАК Сумма,
	АВТОНОМЕРЗАПИСИ() КАК НомерСтроки
ПОМЕСТИТЬ ТабличкаСНомеромСтроки
ИЗ
	Табличка1 КАК Табличка1
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ТабличкаСНомеромСтроки.Контрагент КАК Контрагент,
	ТабличкаСНомеромСтроки.СтатусДокумента КАК СтатусДокумента,
	МИНИМУМ(ТабличкаСНомеромСтроки.НомерСтроки) КАК НомерСтроки
ПОМЕСТИТЬ ТабличкаСНУжнымиНомерамиСтрок
ИЗ
	ТабличкаСНомеромСтроки КАК ТабличкаСНомеромСтроки

СГРУППИРОВАТЬ ПО
	ТабличкаСНомеромСтроки.Контрагент,
	ТабличкаСНомеромСтроки.СтатусДокумента
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Табличка3.Контрагент КАК Контрагент,
	Табличка3.СтатусДокумента КАК СтатусДокумента,
	СУММА(Табличка3.СуммаКорректировки) КАК СуммаКорректировки,
	ТабличкаСНУжнымиНомерамиСтрок.НомерСтроки КАК НомерСтроки
ПОМЕСТИТЬ Результат
ИЗ
	(ВЫБРАТЬ
		ТабличкаСНУжнымиНомерамиСтрок.Контрагент КАК Контрагент,
		ТабличкаСНУжнымиНомерамиСтрок.СтатусДокумента КАК СтатусДокумента,
		0 КАК СуммаКорректировки
	ИЗ
		ТабличкаСНУжнымиНомерамиСтрок КАК ТабличкаСНУжнымиНомерамиСтрок
	
	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		Табличка2.Контрагент,
		Табличка2.СтатусДокумента,
		Табличка2.Сумма
	ИЗ
		Табличка2 КАК Табличка2) КАК Табличка3
		ЛЕВОЕ СОЕДИНЕНИЕ ТабличкаСНУжнымиНомерамиСтрок КАК ТабличкаСНУжнымиНомерамиСтрок
		ПО (ТабличкаСНУжнымиНомерамиСтрок.Контрагент = Табличка3.Контрагент)
			И Табличка3.СтатусДокумента = ТабличкаСНУжнымиНомерамиСтрок.СтатусДокумента

СГРУППИРОВАТЬ ПО
	Табличка3.Контрагент,
	Табличка3.СтатусДокумента,
	ТабличкаСНУжнымиНомерамиСтрок.НомерСтроки
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ТабличкаСНомеромСтроки.Контрагент КАК Контрагент,
	ТабличкаСНомеромСтроки.СтатусДокумента КАК СтатусДокумента,
	ТабличкаСНомеромСтроки.Сумма КАК Сумма,
	ЕстьNULL(Результат.СуммаКорректировки,0) КАК СуммаКорректировки
ИЗ
	ТабличкаСНомеромСтроки КАК ТабличкаСНомеромСтроки
		ЛЕВОЕ СОЕДИНЕНИЕ Результат КАК Результат
		ПО (Результат.НомерСтроки = ТабличкаСНомеромСтроки.НомерСтроки)
Показать
9. user1203706 15 15.01.22 20:50 Сейчас в теме
можно и без времянки а всё в одном запросе.
Если нумера строки нет, то либо автономерзаписи пронумеровать исходную, далее (8).
10. user1203706 15 15.01.22 20:50 Сейчас в теме
либо через создание таблички чисел пронумеровать исходную табличку.
14. starik-2005 3166 17.01.22 14:19 Сейчас в теме
Ужс. Тестовое дали, как сделать непонятно, а на роботу хочу))) Всплакнул...
15. TariK 17.01.22 16:21 Сейчас в теме
(14)
Не прошел из-за задачи, стало интересно решение. Любишь плакать иди ной, чё спамишь тему? Или ничего умного бестолковка на даёт писать?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот