Ситуация такая:
Есть Таблица №Раз вида:
Организация | Контрагент | Проект | Статья затрат | Сумма
В ней содержатся операции которые попадают в итоговый отчет (там еще куча полей, но они сейчас не нужны).
Еще есть Таблица №Два вида практически такого же:
Организация | Контрагент | Проект | Статья затрат | Процент
В Таблице №Два описывается какая доля от той или иной операции должна попасть в отчет. Попадает ли операция из Таблицы №Раз в отчет с полной суммой (100%), либо же сумма умножается на процент из Табл№Два определяется совпадением полей Табл.№Раз и Табл№2.
Причем в Табл№Два можно не заполнять все поля (обязательное тольо Процент + одно из полей на выбор). Пустое поле в Табл№2, к примеру, Контрагент, при заполненых остальных будет означать, что для всех контрагентов по этой указанной организации по указанному проэкту и статьи затрат нужно взять не всю сумму, а указанный процент от суммы. А может быть заполнены всего 2 поля: Проект и Процент. Тогда сумма всех операций (не важно от какой организации, с каким контрагентом и т.д.) из Табл.№Раз с этим проектом должна быть скорректирована согласно указанному проценту.
Вопрос: такую штуку можно обработать в запросе?
Если да, то скажите плз в какую сторону смотреть.
Здравствуйте, susumanin, Вы писали:
S>Ситуация такая: S>Есть Таблица №Раз вида: S>Организация | Контрагент | Проект | Статья затрат | Сумма
S>В ней содержатся операции которые попадают в итоговый отчет (там еще куча полей, но они сейчас не нужны).
S>Еще есть Таблица №Два вида практически такого же: S>Организация | Контрагент | Проект | Статья затрат | Процент
S>В Таблице №Два описывается какая доля от той или иной операции должна попасть в отчет. Попадает ли операция из Таблицы №Раз в отчет с полной суммой (100%), либо же сумма умножается на процент из Табл№Два определяется совпадением полей Табл.№Раз и Табл№2. S>Причем в Табл№Два можно не заполнять все поля (обязательное тольо Процент + одно из полей на выбор). Пустое поле в Табл№2, к примеру, Контрагент, при заполненых остальных будет означать, что для всех контрагентов по этой указанной организации по указанному проэкту и статьи затрат нужно взять не всю сумму, а указанный процент от суммы. А может быть заполнены всего 2 поля: Проект и Процент. Тогда сумма всех операций (не важно от какой организации, с каким контрагентом и т.д.) из Табл.№Раз с этим проектом должна быть скорректирована согласно указанному проценту.
S>Вопрос: такую штуку можно обработать в запросе? S>Если да, то скажите плз в какую сторону смотреть.
Так и пиши "(Раз.Контрагент=Два.Контрагент OR Два.Контрагент IS NULL)".
Здравствуйте, wildwind, Вы писали:
W>Нужно еще определить приоритеты, если из Т2 подходят несколько записей.
походу да, нужно)
W>Ктати таблица 2 называется "OTCAT" ?
Не, она никак не называется, поскольку дальше моей головы пока никуда (если форум не в счет) не пошла.
Здравствуйте, любой, Вы писали:
Л>Так и пиши "(Раз.Контрагент=Два.Контрагент OR Два.Контрагент IS NULL)".
т.е. целиком условие соединения будет выглядеть^
"(Раз.Контрагент=Два.Контрагент OR Два.Контрагент IS NULL) ИЛИ
(Раз.Проект=Два.Проект OR Два.Проект IS NULL) ИЛИ
(Раз.Организация=Два.Организация OR Два.Организация IS NULL) ИЛИ
(Раз.СтатьяЗатрат=Два.СтатьяЗатрат OR Два.СтатьяЗатрат IS NULL)" ?
правильно ли я мыслю, что если будут повторы записей в табл№Два по такому условию, то в итоговый результат попадут 2 строки из Табл№Раз?
Здравствуйте, wildwind, Вы писали:
W>Ктати таблица 2 называется "OTCAT" ?
Сначала не правильно прочел как "остат", а потом когда поставили смайлик дошло.
Не, тут не про откаты. Тут про консолидацию.
Здравствуйте, susumanin, Вы писали:
S>правильно ли я мыслю, что если будут повторы записей в табл№Два по такому условию, то в итоговый результат попадут 2 строки из Табл№Раз?
Конечно. Там ещё ORDER BY в соответствии с приоритетом записей из "Два" не помешает.
Здравствуйте, любой, Вы писали:
Л>Так и пиши "(Раз.Контрагент=Два.Контрагент OR Два.Контрагент IS NULL)".
Не прокатило. Допустим в Таб№Два есть запись:
Контрагент=Вася
Проект=Продажи
Процент=10
(остальные поля незаполнены).
Если условие объединения таблиц будет выглядеть:
(Раз.Контрагент=Два.Контрагент OR Два.Контрагент IS NULL) ИЛИ
(Раз.Проект=Два.Проект OR Два.Проект IS NULL) ИЛИ
(Раз.Организация=Два.Проект OR Два.Проект IS NULL) ИЛИ
(Раз.Статья=Два.Статья OR Два.Статья IS NULL)
то в итоговой таблице процент 10 будет стоять дли всех проектов "Продажи" с любым контрагентом.