|
|
|
listagg / connect by ?
|
|||
|---|---|---|---|
|
#18+
Не могу найти простое решение, может кто подскажет? Есть набор, типа: str_numgroup_num ref_grouptext 1 1 null 'a' 2 1 null 'b' 3 2 1 null 4 2 null 'd' 5 2 null 'e' 6 null 2 'f' Из него нужно получить набор в виде сконкатенированных значений столбца text на каждую запись с учетом связки с группой (ref_group ссылается на группу дочерних элементов, определенных через group_num). Нужно учесть, что группа может включать в себя другую группу. Итого в результате должно получиться: str_num text1 'a'2 'b'3 'a;b'4 'd'5 'e'6 'a;b;d;e;f' Понимаю, что тут listagg или connect by, но их применить по назначению не удалось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2016, 18:00:28 |
|
||
|
listagg / connect by ?
|
|||
|---|---|---|---|
|
#18+
trumonПонимаю, что тут listagg или connect by, но их применить по назначению не удалось.как пытался, где пример ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2016, 18:16:51 |
|
||
|
listagg / connect by ?
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2016, 07:27:24 |
|
||
|
listagg / connect by ?
|
|||
|---|---|---|---|
|
#18+
Премного благодарен, а то уже начал циклы на PL/SQL писать. Но ситуация теперь несколько сложнее. Надо теперь не просто перечисление сделать, но еще и разбить на группы с добавлением атрибута группы. Т.е. имея на входе: str_num group_num ref_group group_attr text1 1 null null 'a'2 1 null null 'b'3 2 1 'a1' null4 2 null null 'd'5 2 null null 'e'6 null 2 'a2' 'f' Надо получить: str_num text1 'a'2 'b'3 'a1(a;b)'4 'd'5 'e'6 'a2(a1(a;b);d;e;f)' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2016, 13:31:26 |
|
||
|
listagg / connect by ?
|
|||
|---|---|---|---|
|
#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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2016, 14:11:15 |
|
||
|
listagg / connect by ?
|
|||
|---|---|---|---|
|
#18+
trumon, Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2016, 16:01:04 |
|
||
|
listagg / connect by ?
|
|||
|---|---|---|---|
|
#18+
авторdbms_photoshop огромное человеческое спасибище.. Но как оказалось и это не все (.. на фактических данных получилось, что элемент может входить в разные группы. Т.е. уже не классическое дерево. Типа: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Вот думаю regexp-ом воспользоваться уже по результирующей выборке или еще есть варианты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2016, 17:20:03 |
|
||
|
listagg / connect by ?
|
|||
|---|---|---|---|
|
#18+
trumon, То что было ID становится ELEMENT_ID а ID нумеруется построчно: Код: 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. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2016, 17:50:29 |
|
||
|
listagg / connect by ?
|
|||
|---|---|---|---|
|
#18+
trumonВот думаю regexp-ом воспользоваться уже по результирующей выборке или еще есть варианты?Ну добавь group_num в группировку, чтоб различать строки с одинаковым ID, в чем проблема? Код: 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. 56. 57. 58. 59. 60. 61. 62. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2016, 18:05:47 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39279228&tid=1887820]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 373ms |

| 0 / 0 |
