|
Не получается выбрать курс валюту на каждую дату в запросе | ☑ | ||
---|---|---|---|---|
0
Nyarlathotep
26.12.18
✎
16:41
|
Всем привет!
Есть изначально вот такой запрос: ВЫБРАТЬ "Займы" КАК ВариантОтчета, ВЫБОР КОГДА ДенежныеСредстваЗаймыОстаткиИОбороты.Регистратор = НЕОПРЕДЕЛЕНО ТОГДА NULL ИНАЧЕ ДенежныеСредстваЗаймыОстаткиИОбороты.Регистратор КОНЕЦ КАК Регистратор, ДенежныеСредстваЗаймыОстаткиИОбороты.ПериодСекунда, ДенежныеСредстваЗаймыОстаткиИОбороты.ПериодМинута, ДенежныеСредстваЗаймыОстаткиИОбороты.ПериодЧас, ДенежныеСредстваЗаймыОстаткиИОбороты.ПериодДень, ДенежныеСредстваЗаймыОстаткиИОбороты.ПериодНеделя, ДенежныеСредстваЗаймыОстаткиИОбороты.ПериодДекада, ДенежныеСредстваЗаймыОстаткиИОбороты.ПериодМесяц, ДенежныеСредстваЗаймыОстаткиИОбороты.ПериодКвартал, ДенежныеСредстваЗаймыОстаткиИОбороты.ПериодПолугодие, ДенежныеСредстваЗаймыОстаткиИОбороты.ПериодГод, ДенежныеСредстваЗаймыОстаткиИОбороты.ФизЛицо, ДенежныеСредстваЗаймыОстаткиИОбороты.СуммаНачальныйОстаток КАК НачальныйОстатокПоЗайму, ДенежныеСредстваЗаймыОстаткиИОбороты.СуммаКонечныйОстаток КАК КонечныйОстатокПоЗайму, ДенежныеСредстваЗаймыОстаткиИОбороты.СуммаПриход КАК ПолучениеЗайма, ДенежныеСредстваЗаймыОстаткиИОбороты.СуммаРасход КАК ВозвратЗайма, ДенежныеСредстваЗаймыОстаткиИОбороты.Валюта ИЗ РегистрНакопления.ДенежныеСредстваЗаймы.ОстаткиИОбороты(, , Авто, , ) КАК ДенежныеСредстваЗаймыОстаткиИОбороты Нужно добавить к нему пересчет валюты в рубли по курсу на дату регистратора, почитал вот тут: http://catalog.mista.ru/public/77568/ после чего сделал в запросе вот так ВЫБРАТЬ "Займы" КАК ВариантОтчета, ВЫБОР КОГДА ДенежныеСредстваЗаймыОстаткиИОбороты.Регистратор = НЕОПРЕДЕЛЕНО ТОГДА NULL ИНАЧЕ ДенежныеСредстваЗаймыОстаткиИОбороты.Регистратор КОНЕЦ КАК Регистратор, ДенежныеСредстваЗаймыОстаткиИОбороты.ПериодСекунда, ДенежныеСредстваЗаймыОстаткиИОбороты.ПериодМинута, ДенежныеСредстваЗаймыОстаткиИОбороты.ПериодЧас, ДенежныеСредстваЗаймыОстаткиИОбороты.ПериодДень, ДенежныеСредстваЗаймыОстаткиИОбороты.ПериодНеделя, ДенежныеСредстваЗаймыОстаткиИОбороты.ПериодДекада, ДенежныеСредстваЗаймыОстаткиИОбороты.ПериодМесяц, ДенежныеСредстваЗаймыОстаткиИОбороты.ПериодКвартал, ДенежныеСредстваЗаймыОстаткиИОбороты.ПериодПолугодие, ДенежныеСредстваЗаймыОстаткиИОбороты.ПериодГод, ДенежныеСредстваЗаймыОстаткиИОбороты.ФизЛицо, СУММА(ДенежныеСредстваЗаймыОстаткиИОбороты.СуммаНачальныйОстаток) КАК НачальныйОстатокПоЗайму, СУММА(ДенежныеСредстваЗаймыОстаткиИОбороты.СуммаКонечныйОстаток) КАК КонечныйОстатокПоЗайму, СУММА(ДенежныеСредстваЗаймыОстаткиИОбороты.СуммаПриход) КАК ПолучениеЗайма, СУММА(ДенежныеСредстваЗаймыОстаткиИОбороты.СуммаРасход) КАК ВозвратЗайма, ДенежныеСредстваЗаймыОстаткиИОбороты.Валюта, ДенежныеСредстваЗаймыОстаткиИОбороты.Регистратор.Дата ПОМЕСТИТЬ втБезКурса ИЗ РегистрНакопления.ДенежныеСредстваЗаймы.ОстаткиИОбороты(, , Авто, , ) КАК ДенежныеСредстваЗаймыОстаткиИОбороты СГРУППИРОВАТЬ ПО ВЫБОР КОГДА ДенежныеСредстваЗаймыОстаткиИОбороты.Регистратор = НЕОПРЕДЕЛЕНО ТОГДА NULL ИНАЧЕ ДенежныеСредстваЗаймыОстаткиИОбороты.Регистратор КОНЕЦ, ДенежныеСредстваЗаймыОстаткиИОбороты.ПериодСекунда, ДенежныеСредстваЗаймыОстаткиИОбороты.ПериодМинута, ДенежныеСредстваЗаймыОстаткиИОбороты.ПериодЧас, ДенежныеСредстваЗаймыОстаткиИОбороты.ПериодДень, ДенежныеСредстваЗаймыОстаткиИОбороты.ПериодНеделя, ДенежныеСредстваЗаймыОстаткиИОбороты.ПериодДекада, ДенежныеСредстваЗаймыОстаткиИОбороты.ПериодМесяц, ДенежныеСредстваЗаймыОстаткиИОбороты.ПериодКвартал, ДенежныеСредстваЗаймыОстаткиИОбороты.ПериодПолугодие, ДенежныеСредстваЗаймыОстаткиИОбороты.ПериодГод, ДенежныеСредстваЗаймыОстаткиИОбороты.ФизЛицо, ДенежныеСредстваЗаймыОстаткиИОбороты.Валюта, ДенежныеСредстваЗаймыОстаткиИОбороты.Регистратор.Дата ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ втБезКурса.ВариантОтчета, втБезКурса.Регистратор, втБезКурса.ПериодСекунда, втБезКурса.ПериодМинута, втБезКурса.ПериодЧас, втБезКурса.ПериодДень, втБезКурса.ПериодНеделя, втБезКурса.ПериодДекада, втБезКурса.ПериодМесяц, втБезКурса.ПериодКвартал, втБезКурса.ПериодПолугодие, втБезКурса.ПериодГод, втБезКурса.ФизЛицо, СУММА(втБезКурса.НачальныйОстатокПоЗайму) КАК НачальныйОстатокПоЗайму, СУММА(втБезКурса.КонечныйОстатокПоЗайму) КАК КонечныйОстатокПоЗайму, СУММА(втБезКурса.ПолучениеЗайма) КАК ПолучениеЗайма, СУММА(втБезКурса.ВозвратЗайма) КАК ВозвратЗайма, втБезКурса.Валюта, МАКСИМУМ(КурсыВалют.Период) КАК Период ПОМЕСТИТЬ втМаксПериод ИЗ втБезКурса КАК втБезКурса ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют ПО втБезКурса.Валюта = КурсыВалют.Валюта И втБезКурса.РегистраторДата >= КурсыВалют.Период СГРУППИРОВАТЬ ПО втБезКурса.ВариантОтчета, втБезКурса.Регистратор, втБезКурса.ПериодСекунда, втБезКурса.ПериодМинута, втБезКурса.ПериодЧас, втБезКурса.ПериодДень, втБезКурса.ПериодНеделя, втБезКурса.ПериодДекада, втБезКурса.ПериодМесяц, втБезКурса.ПериодКвартал, втБезКурса.ПериодПолугодие, втБезКурса.ПериодГод, втБезКурса.ФизЛицо, втБезКурса.Валюта ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ втМаксПериод.ВариантОтчета, втМаксПериод.Регистратор, втМаксПериод.ПериодСекунда, втМаксПериод.ПериодМинута, втМаксПериод.ПериодЧас, втМаксПериод.ПериодДень, втМаксПериод.ПериодНеделя, втМаксПериод.ПериодДекада, втМаксПериод.ПериодМесяц, втМаксПериод.ПериодКвартал, втМаксПериод.ПериодПолугодие, втМаксПериод.ПериодГод, втМаксПериод.ФизЛицо, втМаксПериод.НачальныйОстатокПоЗайму, втМаксПериод.КонечныйОстатокПоЗайму, втМаксПериод.ПолучениеЗайма, втМаксПериод.ВозвратЗайма, втМаксПериод.Валюта, ВЫБОР КОГДА втМаксПериод.Валюта.Наименование <> "руб." ТОГДА втМаксПериод.НачальныйОстатокПоЗайму * КурсыВалют.Курс / КурсыВалют.Кратность ИНАЧЕ втМаксПериод.НачальныйОстатокПоЗайму КОНЕЦ КАК НачальныйОстатокРубли, ВЫБОР КОГДА втМаксПериод.Валюта.Наименование <> "руб." ТОГДА втМаксПериод.КонечныйОстатокПоЗайму * КурсыВалют.Курс / КурсыВалют.Кратность ИНАЧЕ втМаксПериод.КонечныйОстатокПоЗайму КОНЕЦ КАК КонечныйОстатокРубли, ВЫБОР КОГДА втМаксПериод.Валюта.Наименование <> "руб." ТОГДА втМаксПериод.ПолучениеЗайма * КурсыВалют.Курс / КурсыВалют.Кратность ИНАЧЕ втМаксПериод.ПолучениеЗайма КОНЕЦ КАК СуммаПриходРубли, ВЫБОР КОГДА втМаксПериод.Валюта.Наименование <> "руб." ТОГДА втМаксПериод.ВозвратЗайма * КурсыВалют.Курс / КурсыВалют.Кратность ИНАЧЕ втМаксПериод.ВозвратЗайма КОНЕЦ КАК СуммаРасходРубли ИЗ втМаксПериод КАК втМаксПериод ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют ПО втМаксПериод.Валюта = КурсыВалют.Валюта И втМаксПериод.Период = КурсыВалют.Период в итоге получаются какие-то фантастически большие суммы, все рассчитывается неправильно. Что я сделал неправильно? Как мне правильно написать запрос, чтобы сделать пересчет в рубли на дату регистратора? |
|||
1
timurhv
26.12.18
✎
16:46
|
Почему максимум от периода?
|
|||
2
IvanGorbunov
26.12.18
✎
16:48
|
(1) чтобы симитировать срез последнего
|
|||
3
timurhv
26.12.18
✎
16:48
|
(2) Ссори, подумал сравнение наоборот на >=
|
|||
4
timurhv
26.12.18
✎
16:50
|
Вам суммировать поля в "втМаксПериод" нельзя.
|
|||
5
IvanGorbunov
26.12.18
✎
16:51
|
у вас получаются фантистические цифры курса, либо ваших полей, аля "НачальныйОстатокРубли"?
|
|||
6
Nyarlathotep
26.12.18
✎
16:54
|
(5) Моих полей
|
|||
7
Nyarlathotep
26.12.18
✎
16:55
|
(4) Попробовал, все равно суммы нереальные, только поле "Получение займа" считает нормально
|
|||
8
Nyarlathotep
26.12.18
✎
17:01
|
Убрал группировку и суммы в запросе втБезКурса, все равно суммы слишком большие.
|
|||
9
IvanGorbunov
26.12.18
✎
17:30
|
А если поделить получившиеся цифры на ожидаемые, тогда будет целое число? Если да, значит где-то есть поля, по которым идет дополнительное суммирование одних и тех же сумм.
|
|||
10
timurhv
27.12.18
✎
09:43
|
(8) Так группировка-то нужна, вот это оставляйте:
МАКСИМУМ(КурсыВалют.Период) КАК Период А СУММА(...) в втБезКурса - убирайте. Вам для каждой строки необходимо ТОЛЬКО определить максимальную дату. Для того, чтобы понять где ошибка - вытащите поля в конечном запросе: втМаксПериод.КонечныйОстатокПоЗайму, КурсыВалют.Курс, КурсыВалют.Кратность |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |