По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
ВЫБРАТЬ
"123" КАК Код,
5 КАК Количество
ПОМЕСТИТЬ ВТ_Таблица1
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
"123" КАК Код,
"В дороге" КАК Статус,
2 КАК Количество
ПОМЕСТИТЬ ВТ_Таблица2
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"123",
"На складе",
3
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_Таблица1.Код КАК Код,
МАКСИМУМ(ВТ_Таблица1.Количество) КАК Количество,
СУММА(ВЫБОР
КОГДА ВТ_Таблица2.Статус = "В дороге"
ТОГДА ВТ_Таблица2.Количество
ИНАЧЕ 0
КОНЕЦ) КАК КоличествоВДороге,
СУММА(ВЫБОР
КОГДА ВТ_Таблица2.Статус = "На складе"
ТОГДА ВТ_Таблица2.Количество
ИНАЧЕ 0
КОНЕЦ) КАК КоличествоНаСкладе
ИЗ
ВТ_Таблица1 КАК ВТ_Таблица1
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Таблица2 КАК ВТ_Таблица2
ПО (ВТ_Таблица1.Код = ВТ_Таблица2.Код)
СГРУППИРОВАТЬ ПО
ВТ_Таблица1.Код
ПоказатьВЫБРАТЬ
"123" КАК Код,
5 КАК Количество
ПОМЕСТИТЬ Т1
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
"123" КАК Код,
"В дороге" КАК Статус,
2 КАК Количество
ПОМЕСТИТЬ Т2
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"123",
"На складе",
3
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Т1.Код КАК Код,
Т1.Количество КАК Количество,
ВДороге.Количество КАК КоличествоВДороге,
НаСкладе.Количество КАК КоличествоНаСкладе
ИЗ
Т1 КАК Т1
ЛЕВОЕ СОЕДИНЕНИЕ Т2 КАК ВДороге
ПО (Т1.Код = ВДороге.Код
И ВДороге.Статус = "В дороге")
ЛЕВОЕ СОЕДИНЕНИЕ Т2 КАК НаСкладе
ПО (Т1.Код = НаСкладе.Код
И НаСкладе.Статус = "На складе")
Показать
(5)Сделал так, работает, напишите пожалуйста ваше мнение.
Выбрать
Код,
Количество
Поместить Т1
Из Таблица1
;
Выбрать
Код,
Количество Как КоличествоВДороге
Поместить ПоСтатусуВДороге
Из Таблица 2
Где Статус = Значение(Перечисление.Статусы.ВДороге)
;
Выбрать
Код,
Количество Как КоличествоНаСкладе
Поместить ПоСтатусуНаСкладе
Из Таблица 2
Где Статус = Значение(Перечисление.Статусы.НаСкладе)
;
Выбрать
Код,
Количество,
КоличествоВДороге,
КоличествоНаСкладе
Из Т1
Левое Соединение ПоСтатусуВДороге
По Т1.Код = Т2.Код
Левое Соединение ПоСтатусуНаСкладе
По Т1.Код = Т2.Код
Показать
(12) Обратите внимание на другие ответы. Вариант с соединением будет работать только в том случае, если таблицы ПоСтатусуВДороге и ПоСтатусуНаСкладе уже сгруппированы и на каждую строку из Таблица1 приходится не более 1 строки из этих таблиц, иначе произойдет перемножение количества строк в результирующем запросе. В таком случае лучше воспользоваться вариантами из (2) или (9), на мой взгляд.
ВЫБРАТЬ
"123" КАК Код,
5 КАК Количество
ПОМЕСТИТЬ Т1
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
"123" КАК Код,
"В дороге" КАК Статус,
2 КАК Количество
ПОМЕСТИТЬ Т2
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"123",
"На складе",
3
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Т1.Код КАК Код,
СУММА(ВЫБОР КОГДА Т2.Статус = "В дороге" Тогда Т1.Количество Иначе 0 Конец) КАК КоличествоВДороге,
СУММА(ВЫБОР КОГДА Т2.Статус = "На складе" Тогда Т1.Количество Иначе 0 Конец) КАК КоличествоНаСкладе
ИЗ
Т1 КАК Т1
ЛЕВОЕ СОЕДИНЕНИЕ Т2 КАК Т2
ПО (Т1.Код = Т2.Код)
СГРУППИРОВАТЬ ПО
Т1.Код
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот