|
|
|
Как вставить несуществующие диапазоны дат
|
|||
|---|---|---|---|
|
#18+
Привет. Есть задача получить все диапазоны дат в выборке. Есть селект select X.ID, x.effective_start_date, x.effective_end_date from (select 1 as ID , to_date('01.01.2017','DD.MM.YYYY') as effective_start_Date, to_date('03.08.2017','DD.MM.YYYY') as effective_end_date FROM DUAL UNION ALL select 1 as ID , to_date('07.08.2017','DD.MM.YYYY') as effective_start_Date, to_date('31.12.2018','DD.MM.YYYY') as effective_end_date FROM DUAL) x where x.id = 1 and X.effective_start_date <= to_date('31.08.2017','DD.MM.YYYY') AND X.effective_end_date >= to_date('01.08.2017','DD.MM.YYYY') Он возвращает логично две строки: 1 1 01.01.2017 03.08.2017 2 1 07.08.2017 31.12.2018 А как сделать красиво так, чтобы вставилась несуществующий как бы диапазон: 1 1 01.01.2017 03.08.2017 X 1 04.08.2017 06.08.2017 2 1 07.08.2017 31.12.2018 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2017, 15:23 |
|
||
|
Как вставить несуществующие диапазоны дат
|
|||
|---|---|---|---|
|
#18+
заранее спасибо... может есть какой то красивый вариант решения... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2017, 15:24 |
|
||
|
Как вставить несуществующие диапазоны дат
|
|||
|---|---|---|---|
|
#18+
Sneaky Pete, для двух записей, или для общего случая (дырки)? ps lag/lead .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2017, 15:33 |
|
||
|
Как вставить несуществующие диапазоны дат
|
|||
|---|---|---|---|
|
#18+
Stax, для общего случая.. .когда дырки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2017, 15:39 |
|
||
|
Как вставить несуществующие диапазоны дат
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2017, 15:56 |
|
||
|
Как вставить несуществующие диапазоны дат
|
|||
|---|---|---|---|
|
#18+
Sneaky Pete, Код: 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. ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2017, 16:10 |
|
||
|
Как вставить несуществующие диапазоны дат
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous, а если еще точнее то where effective_start_date < effective_end_date надо заменить на where effective_start_date <= effective_end_date, так как дырка может быть и один день:) Спасибище! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2017, 16:10 |
|
||
|
Как вставить несуществующие диапазоны дат
|
|||
|---|---|---|---|
|
#18+
Stax, Последняя строка у тебя лишняя. У меня была идея решить без подзапросов, но union all портит всю красоту. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2017, 01:37 |
|
||
|
Как вставить несуществующие диапазоны дат
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopStax, Последняя строка у тебя лишняя. вопрос оракл lead будет раз считать, или три раза? спасибо, замодифицировался Код: 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. ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2017, 08:36 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39541872&tid=1885031]: |
0ms |
get settings: |
6ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
174ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 515ms |

| 0 / 0 |
