|
Помощь с запросом
|
|||
---|---|---|---|
#18+
Добрый день! Как не опытному sqlщику, подскажите, пожалуйста Есть 2 таблицы Table1 ID STARTDATE FINISHDATE INFO100 2021-01-01 2021-06-30 InfTab1_1100 2021-01-07 2099-12-31 InfTab1_2 Table2 ID STARTDATE FINISHDATE INFO100 2021-01-01 2021-05-05 InfTab2_1100 2021-05-06 2099-12-31 NULL Из этих 2-х таблиц нужно получить одну, вида Table3 ID STARTDATE FINISHDATE INFO_T1 INFO_T2100 2021-01-01 2021-05-05 InfTab1_1 InfTab2_1100 2021-05-06 2021-06-30 InfTab1_1 NULL100 2021-01-07 2099-12-31 InfTab1_2 NULL Прошу помощи, как это можно сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 20:42 |
|
Помощь с запросом
|
|||
---|---|---|---|
#18+
Игорь86, интервалы пересекаются, если a1 <= b2 И b1 <= a2. А если бы вторая таблица начиналась 2021-01-02, то добавили бы две строки в результат? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 22:31 |
|
Помощь с запросом
|
|||
---|---|---|---|
#18+
Владислав Колосов, Владислав КолосовА если бы вторая таблица начиналась 2021-01-02, то добавили бы две строки в результат? То и первая таблица начиналась бы с 2021-01-02 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 10:17 |
|
Помощь с запросом
|
|||
---|---|---|---|
#18+
Игорь86, Если есть возможность разбить таблицы построчно (по 1 дню на строку), то дальше всё просто: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Не знаю, сколько у Вас разных id, но в целом 365*100 вроде не так много получается. Как разбить таблицы построчно сходу не скажу, но видимо нужно использовать функцию DATEADD(day, 1, DATE). ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 18:42 |
|
Помощь с запросом
|
|||
---|---|---|---|
#18+
Придумал, как разбить таблицы построчно с использованием recursive cte. Глубины рекурсии как раз хватает на 365*80 дней. Не знаю, будет ли работать с несколькими разными ID, может придётся допиливать. Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 19:59 |
|
Помощь с запросом
|
|||
---|---|---|---|
#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.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 20:43 |
|
Помощь с запросом
|
|||
---|---|---|---|
#18+
Красиво, но сработает только для случаев, когда в ответе STARTDATE != FINISHDATE (нет периодов длиной в 1 день) поскольку UNION схлопнет повторяющиеся даты. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 23:41 |
|
Помощь с запросом
|
|||
---|---|---|---|
#18+
DanilaSP Красиво, но сработает только для случаев, когда в ответе STARTDATE != FINISHDATE (нет периодов длиной в 1 день) поскольку UNION схлопнет повторяющиеся даты. Это все решаемо без проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 05:26 |
|
Помощь с запросом
|
|||
---|---|---|---|
#18+
aleks222, Спасибо, буду думать ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 13:07 |
|
Помощь с запросом
|
|||
---|---|---|---|
#18+
Я так понимаю нужно заменить соответствующую часть кода следующим: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Также убрать условие e > dateadd(day, 1, b). Остаётся условие, которое по-моему можно убрать: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2021, 14:13 |
|
Помощь с запросом
|
|||
---|---|---|---|
#18+
DanilaSP Я так понимаю нужно заменить соответствующую часть кода следующим: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Также убрать условие e > dateadd(day, 1, b). Остаётся условие, которое по-моему можно убрать: Код: sql 1.
Не понимаешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2021, 15:08 |
|
Помощь с запросом
|
|||
---|---|---|---|
#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.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2021, 15:30 |
|
Помощь с запросом
|
|||
---|---|---|---|
#18+
aleks222, Согласен. Я не понимаю, ЧТО я не понимаю) Вроде бы работает: Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2021, 20:10 |
|
Помощь с запросом
|
|||
---|---|---|---|
#18+
DanilaSP aleks222, Согласен. Я не понимаю, ЧТО я не понимаю) Вроде бы работает: Код: 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.
Глазки следует протирать. Вроде <> работает. Увы. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2021, 18:06 |
|
|
start [/forum/topic.php?fid=46&fpage=10&tid=1684141]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 143ms |
0 / 0 |