|
Курс валюты на заданную дату, при условии, что не известна дата начала действия курса
|
|||
---|---|---|---|
#18+
Есть таблица: код валюты, значение курса, дата начала действия курса. Данные в таблицу записываются каждый раз, когда меняется курс валюты. Нужно получить курс валюты на заданную дату. С помощью max (date_c) keep (dense_rank last order by date_c) можно найти нужную дату из таблицы, но в одну дату может быть несколько записей и получить нужно не дату, а значения курса). Например, к исходным данным ниже ещё нужно добавить изменение курса по eur в один день: select 'eur', 7, to_date ('05.03.2020', 'dd/mm/yyyy') from dual union all with K (COD, VAL, DATE_C) as ( select 'usd', 5, to_date ('01.01.2020', 'dd/mm/yyyy') from dual union all select 'eur', 5, to_date ('01.01.2020', 'dd/mm/yyyy') from dual union all select 'eur', 6, to_date ('05.03.2020', 'dd/mm/yyyy') from dual union all select 'eur', 9, to_date ('07.08.2020', 'dd/mm/yyyy') from dual union all select 'eur', 12, to_date ('18.11.2020', 'dd/mm/yyyy') from dual union all select 'eur', 15, to_date ('03.01.2021', 'dd/mm/yyyy') from dual) select max (date_c) keep (dense_rank last order by date_c) from K where date_c<='06.07.2020' and cod='eur' ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2021, 16:26 |
|
Курс валюты на заданную дату, при условии, что не известна дата начала действия курса
|
|||
---|---|---|---|
#18+
Ну и да, на каждую дату в таблице будет и eur и usd и если в день несколько раз курс меняется, то дата будет в формате с минутами. Можно особо не обращать на данные в таблице, это больше для пояснения задачи ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2021, 16:32 |
|
Курс валюты на заданную дату, при условии, что не известна дата начала действия курса
|
|||
---|---|---|---|
#18+
tort3 Ну и да, на каждую дату в таблице будет и eur и usd и если в день несколько раз курс меняется, то дата будет в формате с минутами. Чтобы различать eur и usd вполне достаточно условия в where ... and cod='eur', либо, если нужно на текущую дату выводить курсы всех имеющихся валют, то нужно переписать запрос с использованием group by COD. Если дата будет с минутами то, и условие выбора должно учитывать это. авторполучить нужно не дату, а значения курса Для этого достаточно заменить поле даты на поле курса: Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2021, 16:37 |
|
Курс валюты на заданную дату, при условии, что не известна дата начала действия курса
|
|||
---|---|---|---|
#18+
Курс на заданную дату определяется как последнее по дате-времени значение всех записей дата-время которых меньше или равно входного значения? Или есть ещё оговорки? Пока что выглядит на обычный row_number() ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2021, 16:40 |
|
Курс валюты на заданную дату, при условии, что не известна дата начала действия курса
|
|||
---|---|---|---|
#18+
tort3, по старинке Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
зы row_number()=1 Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2021, 16:42 |
|
Курс валюты на заданную дату, при условии, что не известна дата начала действия курса
|
|||
---|---|---|---|
#18+
env, Условие звучит так: получить курс на заданную дату. Можно интерпретировать как получить все значение курса на определенную дату ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2021, 16:44 |
|
Курс валюты на заданную дату, при условии, что не известна дата начала действия курса
|
|||
---|---|---|---|
#18+
Stax, в одну дату может быть несколько записей для одной валюты ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2021, 16:46 |
|
Курс валюты на заданную дату, при условии, что не известна дата начала действия курса
|
|||
---|---|---|---|
#18+
tort3, Если на вход пришло 01.01.2021, это означает
... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2021, 16:46 |
|
Курс валюты на заданную дату, при условии, что не известна дата начала действия курса
|
|||
---|---|---|---|
#18+
tort3 Stax, в одну дату может быть несколько записей для одной валюты какую из нескольких брать? ps предлагаю avg .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2021, 16:49 |
|
Курс валюты на заданную дату, при условии, что не известна дата начала действия курса
|
|||
---|---|---|---|
#18+
env, <= 01.01.2021 23:59:59 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2021, 16:50 |
|
Курс валюты на заданную дату, при условии, что не известна дата начала действия курса
|
|||
---|---|---|---|
#18+
Stax, Нужно вывести все значения на указанную дату ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2021, 16:53 |
|
Курс валюты на заданную дату, при условии, что не известна дата начала действия курса
|
|||
---|---|---|---|
#18+
tort3, Стас уже привёл решения, осталось только входной параметр правильно написать. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2021, 16:55 |
|
Курс валюты на заданную дату, при условии, что не известна дата начала действия курса
|
|||
---|---|---|---|
#18+
tort3 Stax, Нужно вывести все значения на указанную дату rank Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
ps обычно курс нужен на дату со временем или берут на начало/клнец дня .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2021, 17:04 |
|
Курс валюты на заданную дату, при условии, что не известна дата начала действия курса
|
|||
---|---|---|---|
#18+
Stax, В этом примере потеряли 'eur', 5, to_date ('01.01.2020') ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2021, 17:12 |
|
Курс валюты на заданную дату, при условии, что не известна дата начала действия курса
|
|||
---|---|---|---|
#18+
tort3, Там на самом деле trunc(date_c) потерялся, но для понимания идеи это не так важно ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2021, 17:16 |
|
Курс валюты на заданную дату, при условии, что не известна дата начала действия курса
|
|||
---|---|---|---|
#18+
tort3 Stax, В этом примере потеряли 'eur', 5, to_date ('01.01.2020') ничего не понял курс на (или за/часто ето важно) 06.07.2020 установили '05.03.2020' курс установленный 01.01.2020 действовал ДО 05.03.2020 мож просто пример с курсом неудачный, и надо что-то другое ps Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2021, 17:27 |
|
Курс валюты на заданную дату, при условии, что не известна дата начала действия курса
|
|||
---|---|---|---|
#18+
Stax tort3, по старинке Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
зы row_number()=1 Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
..... stax Спасибо! Скорее всего не нужно придумывать сложности и дата уникальна и без времени в таблице. Некорректно составленное ТЗ я считаю ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2021, 17:29 |
|
|
start [/forum/moderation_log.php?user_name=%D0%92%D0%BB%D0%B0%D0%B4%D0%B8%D1%81%D0%BB%D0%B0%D0%B2+%D0%9B%D0%B0%D1%80%D0%B8%D0%BD]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
others: | 694ms |
total: | 858ms |
0 / 0 |