|
Подскажите как сделать отбор
|
|||
---|---|---|---|
#18+
Есть таблица со следующими данными. Время открытия и закрытия может быть как в одном месяце, так и в разных. INCIDENT | OPEN_TIME | CLOSE_TIME =============================================== IN123456 | 2022-01-03 08:41:22.000 | 2022-03-10 09:40:27.000 Мне необходимо отобрать такие записи в другую таблицу, где они бы разделились следующим образом: INCIDENT | OPEN_TIME | CLOSE_TIME =============================================== IN123456 | 2022-01-03 08:41:22.000 | 2022-01-31 23:59:00.000 IN123456 | 2022-02-01 00:00:00.000 | 2022-02-28 23:59:00.000 IN123456 | 2022-03-01 00:00:00.000 | 2022-03-10 09:40:27.000 То есть чтоб первоначальная запись разбилась на промежутки по месяцам и последний промежуток заканчивался как раз датой CLOSE_TIME первоначальной таблицы ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2022, 11:21 |
|
Подскажите как сделать отбор
|
|||
---|---|---|---|
#18+
alexandrDr87, составьте календарь последних дней месяца, выберите все сочетания таблиц при условии, что дата календаря попадает между началом и концом. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2022, 11:29 |
|
Подскажите как сделать отбор
|
|||
---|---|---|---|
#18+
Спасибо всем кто обратил внимание на тему. У меня все же получилось это сделать. Надеюсь на конструктивную критику и возможно подсказки по оптимизации. На данный момент как по мне работает достаточно сносно. 10 000 строк обрабатывает 18 секунд. Код: sql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2022, 19:28 |
|
Подскажите как сделать отбор
|
|||
---|---|---|---|
#18+
alexandrDr87 У меня все же получилось это сделать ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2022, 20:25 |
|
Подскажите как сделать отбор
|
|||
---|---|---|---|
#18+
alexeyvg alexandrDr87 У меня все же получилось это сделать Покажите решение с календарем, я не понимаю что вы имеете ввиду ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2022, 21:22 |
|
Подскажите как сделать отбор
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2022, 21:23 |
|
Подскажите как сделать отбор
|
|||
---|---|---|---|
#18+
Когда вам кажется что в РБД вам надо сделать курсор, вам надо либо пересмотреть хранение ваших данных либо почитать функционал вашей базы данных. alexandrDr8710 000 строк обрабатывает 18 секунд. И это только начало. Курсор вам и не такое выделает ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2022, 05:46 |
|
Подскажите как сделать отбор
|
|||
---|---|---|---|
#18+
Код: sql 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.
alexandrDr87, ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2022, 09:09 |
|
Подскажите как сделать отбор
|
|||
---|---|---|---|
#18+
alexandrDr87 alexeyvg пропущено... На что только люди не идут, что бы не делать таблицу-календарь :-( Покажите решение с календарем, я не понимаю что вы имеете ввиду Владислав Колосов составьте календарь последних дней месяца, выберите все сочетания таблиц при условии, что дата календаря попадает между началом и концом. Есть календарь, делаете к нему джойн вашей таблицы В результате для одной записи из вашей таблицы получается одна запись на каждую запись в календаре, с которой она джойнится по условию соединения. Помощь с конкретным кодом предполагает, что вы предоставили этот код, с созданием таблиц и наполнением их данными, тут люди сделали за вас черновую работу... Пример кода от godsql - это тоже по сути решения с календарём, только он формируется на лету, прямо в запросе. А код от LexusR - это как бы курсор, только в виде CTE А вот пример с календарём в чистом виде: Код: sql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2022, 13:45 |
|
Подскажите как сделать отбор
|
|||
---|---|---|---|
#18+
alexandrDr87, если попробуете такой вариант с рекурсией, будет интересно сравнить время выполнения с текущей Вашей реализацией Код: sql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2022, 02:19 |
|
|
start [/forum/topic.php?fid=46&msg=40133412&tid=1683836]: |
0ms |
get settings: |
12ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
57ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
77ms |
get tp. blocked users: |
1ms |
others: | 269ms |
total: | 448ms |
0 / 0 |