|
|
|
Разбить период на подпериоды.
|
|||
|---|---|---|---|
|
#18+
Есть необходимость разбивки периода на несколько периодов. Например, период 01.03.2018 - 10.03.2018 и два (их может быть больше) периода: 03.03.2018 - 05.03.2018, 07.03.2018 - 08.03.2018 В результате нужно получить периоды в которые не входят выше указанные периоды,т.е. результат должен быть : 01.03.2018 - 02.03.2018, 06.03.2018 - 06.03.2018, 09.03.2018 - 10.03.2018 Ситуации могут быть когда даты первого периода находятся внутри последующих периодов, например 01.03.2018 - 10.03.2018 и 03.02.2018 - 12.03.2018 , в таком случае запрос не должен выдавать резулльтат. 01.03.2018 - 10.03.2018 и 25.02.2018 - 03.03.2018 в результате будет 04.03.2018- 10.03.2018 01.03.2018 - 10.03.2018 и 05.03.2018 - 13.03.2018 в результате будет 11.03.2018- 13.03.2018 и тд Может кто сталкивался с такой задачей , возможно ли запросом решиь данную задачу? Заранее благодарю за ответы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2018, 14:55 |
|
||
|
Разбить период на подпериоды.
|
|||
|---|---|---|---|
|
#18+
vi85, например: 1. берешь таблицу всех дат по первому периоду 2. исключаешь даты последующих периодов 3. остаток группируешь по sog ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2018, 15:05 |
|
||
|
Разбить период на подпериоды.
|
|||
|---|---|---|---|
|
#18+
vi85, вечная тема, пересекающиеся интервалы если делать влоб 1) соеденяем каждый с кажным (получаем подинтервальчики) 2) выбрасываем дубли ps лень тестовые данные набивать ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2018, 15:12 |
|
||
|
Разбить период на подпериоды.
|
|||
|---|---|---|---|
|
#18+
vi85, тю, ето ж проще исходный ж перид один одиношенький гляньте с другой стороны "разбить/обьеденить" несколько периодов одним .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2018, 15:21 |
|
||
|
Разбить период на подпериоды.
|
|||
|---|---|---|---|
|
#18+
Stax, А можно пример? Развернуть все интервалы в строки, затем убрать пересекающиеся - это довольно просто. А как потом строки собрать обратно в период? Например: 01.01.2018 02.01.2018 03.01.2018 07.01.2018 08.01.2018 Как привести к виду: 01.01.2018 - 03.01.2018 07.01.2018 - 08.01.2018 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2018, 08:07 |
|
||
|
Разбить период на подпериоды.
|
|||
|---|---|---|---|
|
#18+
EgoрDshedoo, SOG 21277815 Действительно. Ещё нашёл такую интересную штуку: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2018, 09:26 |
|
||
|
Разбить период на подпериоды.
|
|||
|---|---|---|---|
|
#18+
Dshedoo, Код: 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. зы если появится время, попробую без разворачивания в дни .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2018, 09:34 |
|
||
|
Разбить период на подпериоды.
|
|||
|---|---|---|---|
|
#18+
Dshedoo, сильно не тестировал Код: 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. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2018, 10:36 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39619278&tid=1884250]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 382ms |

| 0 / 0 |
