|
Использование оконных (аналитических) функций
|
|||
---|---|---|---|
#18+
env, добавил коммент в условие выше. Сортировка по id не обязательна, так как даты итак будут отсортированы по времени. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 12:03 |
|
Использование оконных (аналитических) функций
|
|||
---|---|---|---|
#18+
Код: 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. 29. 30. 31. 32. 33.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 12:11 |
|
Использование оконных (аналитических) функций
|
|||
---|---|---|---|
#18+
ARRay001 Сортировка по id не обязательна, так как даты итак будут отсортированы по времени. date1 содержит время ? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 12:25 |
|
Использование оконных (аналитических) функций
|
|||
---|---|---|---|
#18+
AmKad, интересное решение - надо осознать до конца и проверить у себя. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 12:26 |
|
Использование оконных (аналитических) функций
|
|||
---|---|---|---|
#18+
123йй, к сожалению, оказалось, что не содержит. Но и повторов в конкретной выборке, скорее всего не будет. Так что, прошу прощения - условие упрощается. Сортировки по одной дате не нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 12:32 |
|
Использование оконных (аналитических) функций
|
|||
---|---|---|---|
#18+
AmKad, не будет ли last_value плавающим/случайным из-за неуникальной сортировки order by trunc(date1, 'month')? ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 13:10 |
|
Использование оконных (аналитических) функций
|
|||
---|---|---|---|
#18+
Stax AmKad, не будет ли last_value плавающим/случайным из-за неуникальной сортировки order by trunc(date1, 'month')? ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 13:26 |
|
Использование оконных (аналитических) функций
|
|||
---|---|---|---|
#18+
AmKad Stax AmKad, не будет ли last_value плавающим/случайным из-за неуникальной сортировки order by trunc(date1, 'month')? ..... stax допустим date1 без повторений но trunc(date1, 'month') для сортировки уже с повторениями (первое число) ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 15:21 |
|
Использование оконных (аналитических) функций
|
|||
---|---|---|---|
#18+
Задачка опять видоизменилась. Берётся не последний день месяца, а последний день месяца, имеющийся в списке дат. Т.е. любая последняя дата предыдущего месяца. Наверное изменится интервал? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 15:51 |
|
Использование оконных (аналитических) функций
|
|||
---|---|---|---|
#18+
ARRay001 Задачка опять видоизменилась. Берётся не последний день месяца, а последний день месяца, имеющийся в списке дат. Т.е. любая последняя дата предыдущего месяца. Наверное изменится интервал? не совсем понятно мож достаточно убрать last_day Код: 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. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38.
..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 16:00 |
|
Использование оконных (аналитических) функций
|
|||
---|---|---|---|
#18+
ARRay001, я не могу понять (токо время потратил вместо чтоб ...) как работает order by trunc(date1, 'month') range between interval '1' month preceding and interval '1' month preceding сделал влоб (наверняка красивее можно напр exact day и тд) мож пригодится Код: 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. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44.
..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 17:41 |
|
Использование оконных (аналитических) функций
|
|||
---|---|---|---|
#18+
ARRay001 Задачка опять видоизменилась. Берётся не последний день месяца, а последний день месяца, имеющийся в списке дат. Т.е. любая последняя дата предыдущего месяца. Наверное изменится интервал? Stax мож достаточно убрать last_day Код: plsql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 18:26 |
|
Использование оконных (аналитических) функций
|
|||
---|---|---|---|
#18+
ARRay001 Задачка опять видоизменилась. Берётся не последний день месяца, а последний день месяца, имеющийся в списке дат. Т.е. любая последняя дата предыдущего месяца. Код: plsql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 18:27 |
|
Использование оконных (аналитических) функций
|
|||
---|---|---|---|
#18+
AmKad ARRay001 Задачка опять видоизменилась. Берётся не последний день месяца, а последний день месяца, имеющийся в списке дат. Т.е. любая последняя дата предыдущего месяца. Наверное изменится интервал? Stax мож достаточно убрать last_day Код: plsql 1. 2.
22233858 я вообще не понял как оно работает (какое окно выщитывает) Код: 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. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43.
зі забыл за -1 add_month (старость) ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 18:36 |
|
Использование оконных (аналитических) функций
|
|||
---|---|---|---|
#18+
Stax Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 18:46 |
|
Использование оконных (аналитических) функций
|
|||
---|---|---|---|
#18+
Однако, за время пути... опять новость: надо ещё эту дату сравнивать с результатом запроса, который показывает выходной это или нет. Если выходной, то брать первый день следующего месяца вместо последней даты из предыдущего месяца... Запрос вида: select t.wd from wdate t where t.date = date1, где t.wd = 0 - не рабочие дни, 1 - рабочие ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 14:55 |
|
Использование оконных (аналитических) функций
|
|||
---|---|---|---|
#18+
ARRay001, Сделайте уже календарь со всеми необходимыми датами и признаками ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 15:25 |
|
Использование оконных (аналитических) функций
|
|||
---|---|---|---|
#18+
ARRay001 то брать первый день следующего месяца вместо последней даты из предыдущего месяца... а потом окажется что первый день следующего месяца выходной и надо ... зы рассчитайте два поля 1-последний день пред. месяца и первый день текущего (если я правильно понял) и в зависимости от выходного выбирайте одну из зол зыы мож проще создать ф-цию и в ней "любе" ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 15:27 |
|
Использование оконных (аналитических) функций
|
|||
---|---|---|---|
#18+
Stax, функция не впишется в концепцию данного решения - это всё сначала делать в pl/sql. Я бы делал что-то вроде: проверяю последнюю, имеющуюся в наличии, дату предыдущего месяца. Если она не вых - берём её, если вых - ищу первую имеющуюся рабочую дату следующего месяца. Вот как лучше запихнуть всё это в один аналитический запрос - что-то с case скорее всего... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 15:30 |
|
Использование оконных (аналитических) функций
|
|||
---|---|---|---|
#18+
ARRay001 Вот как лучше запихнуть всё это в один аналитический запрос - что-то с case скорее всего... как луче я не знаю, как через два поля я описал (если я правильно понимаю задачку) приведите данные (with t1 (id, date1, fld2, fld3) as ... ) и что получить ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 17:22 |
|
Использование оконных (аналитических) функций
|
|||
---|---|---|---|
#18+
ARRay001 env, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Результат: В строке с датой '12.10.2020' надо, допустим, значение fld2 сделать равным значению fld3 на у даты '10.10.2020'. Дословный ответ. Код: plsql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 19:30 |
|
Использование оконных (аналитических) функций
|
|||
---|---|---|---|
#18+
ARRay001 Задачка опять видоизменилась. Берётся не последний день месяца, а последний день месяца, имеющийся в списке дат. Т.е. любая последняя дата предыдущего месяца. Наверное изменится интервал? Напишите новые таблицы задачи и желаемый результат, чтобы не бегать между начальником и форумом "А это, правильный ответ?" Добрая воля имеет пределы :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2020, 19:33 |
|
Использование оконных (аналитических) функций
|
|||
---|---|---|---|
#18+
Исходные данные не поменялись. Пример приводили много раз выше. Вот, вариант генерации: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
В данном примере находится значение lv, равное значению fld3 по последней дате из предыдущего месяца, имеющейся в таблице (НЕ ПОСЛЕДНЕЙ ДАТЕ предыдущего месяца, а ПОСЛЕДНЕЙ ИМЕЮЩЕЙСЯ ДАТЕ предыдущего месяца). Задача: видоизменить расчёт lv, чтобы если последняя имеющаяся дата предыдущего месяца является выходным днём (т.е. сравнивается с результатом из таблицы с датами select t.wd from wdate t where t.date = date1, где t.wd = 0 - не рабочие дни, 1 - рабочие), то берётся первая имеющаяся рабочая дата следующего имеющегося в наличии месяца. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 12:12 |
|
Использование оконных (аналитических) функций
|
|||
---|---|---|---|
#18+
ARRay001, '30.09.2020' и '30.10.2020' выходные для union all select 111, to_date('30.10.2020', 'DD.MM.YYYY'), 10, '11' from dual что насчитаете? ps желательно ид сделать уникальными, так легче общатся ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 14:15 |
|
Использование оконных (аналитических) функций
|
|||
---|---|---|---|
#18+
Опять прошу прощения за некорректную постановку, но наконец сам понял что именно надо: Исходные данные (вариант генерации): Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
В данном примере находится значение lv, равное значению fld3 по последней дате из предыдущего месяца, имеющейся в таблице (НЕ ПОСЛЕДНЕЙ ДАТЕ предыдущего месяца, а ПОСЛЕДНЕЙ ИМЕЮЩЕЙСЯ ДАТЕ предыдущего месяца). Задача: если если текущая дата конца месяца (здесь '31.10.2020' суббота) является выходным днём (т.е. сравнивается с результатом из таблицы с датами select t.wd from wdate t where t.date = date1, где t.wd = 0 - не рабочие дни, 1 - рабочие), то вычисленное значение lv ставится в fld2, соответствующее первой имеющейся рабочей дате (здесь это '02.11.2020') следующего имеющегося в наличии месяца (ближайшая дата следующего месяца обязательно будет присутствовать). Если текущая дата конца месяца рабочая, то значение lv подставляется в fld2 по текущей дате. Трудновато выделить всё в отдельный пример. Изменится структура данного запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 17:19 |
|
|
start [/forum/topic.php?fid=52&msg=40020541&tid=1880632]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
131ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 241ms |
0 / 0 |