|
listagg+distinct
|
|||
---|---|---|---|
#18+
Работают вместе или только через подзапросы? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2014, 18:15 |
|
listagg+distinct
|
|||
---|---|---|---|
#18+
andreymx, Не работают. Надо писать свою агрегирующую функцию, либо использовать wm_concat, либо использовать подзапросы. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2014, 18:45 |
|
listagg+distinct
|
|||
---|---|---|---|
#18+
Расстроили вы меня, все 29-еро ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2014, 19:11 |
|
listagg+distinct
|
|||
---|---|---|---|
#18+
Можно попробовать regexp'ом (нашел на просторах инета) Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2014, 22:03 |
|
listagg+distinct
|
|||
---|---|---|---|
#18+
MazoHistМожно попробовать regexp'ом (нашел на просторах инета) Код: plsql 1.
увеличивается возможность переполнения ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2014, 22:10 |
|
listagg+distinct
|
|||
---|---|---|---|
#18+
Вообще, distinct с order by даже в collect не работают Вот так собирает различные элементы в группе Код: plsql 1. 2. 3. 4. 5. 6.
А вот так условие distinct игнорирует, зато сортирует Код: plsql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2014, 22:40 |
|
listagg+distinct
|
|||
---|---|---|---|
#18+
MazoHistМожно попробовать regexp'ом (нашел на просторах инета) Код: plsql 1.
кривой регексп Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2014, 14:42 |
|
listagg+distinct
|
|||
---|---|---|---|
#18+
йцу1, а вот так уже работает Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2014, 13:09 |
|
listagg+distinct
|
|||
---|---|---|---|
#18+
demid-dйцу1, а вот так уже работает Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
это до тех пор, пока внутренний результат ограничивается 4-кб ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2014, 13:14 |
|
listagg+distinct
|
|||
---|---|---|---|
#18+
andreymxэто до тех пор, пока внутренний результат ограничивается 4-кба после тех пор результат listagg не ограничивается? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2014, 13:29 |
|
listagg+distinct
|
|||
---|---|---|---|
#18+
йцу1кривой регексп Жадный он а не кривой : Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2014, 15:32 |
|
listagg+distinct
|
|||
---|---|---|---|
#18+
29 Белых КотиковВообще, distinct с order by даже в collect не работают Distinct с collect только в sql-контексте работают. В Pl/Sql уже нет, приходится execute immediate использовать. Очень часто distinct-order-collect можно заменить на cast-multiset. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2014, 18:12 |
|
listagg+distinct
|
|||
---|---|---|---|
#18+
-2-andreymxэто до тех пор, пока внутренний результат ограничивается 4-кба после тех пор результат listagg не ограничивается?имел в виду, что там, где какой-нить StrAgg(Distinct) мог бы отработать, regexp_replace(listagg( с такой же легкостью может свалиться ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2014, 19:19 |
|
listagg+distinct
|
|||
---|---|---|---|
#18+
Создал таблицы TRANSACT_TEST. Код: plsql 1. 2. 3. 4. 5. 6. 7.
Наполнил ее. Код: 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.
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Наполнил... Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Задача: Нужно найти всех должников и вывести через запятую только те позиции, которые не оплачены. Т.е. MS_NUMBER через запятую. Если выполнить простой селект Код: plsql 1.
Видим. ID ID_CLIENT ID_MESSAGE SUMMA DATA_TRANSACT M_NUMBER217523 13504 140265 200 24-сен-2014 3190215075 13504 140265 -200 10-сен-2014 3190215484 13504 140655 -200 15-сен-2014 3279217524 13504 140655 200 24-сен-2014 3279217458 13504 141293 -200 23-сен-2014 3491 217459 13504 141294 -200 23-сен-2014 3493 217248 20940 133588 -150 19-сен-2014 2126217742 20940 133588 150 26-сен-2014 2126217800 20940 139946 180 27-сен-2014 3107214748 20940 139946 -180 05-сен-2014 3107217799 20940 139947 180 27-сен-2014 3108214749 20940 139947 -180 05-сен-2014 3108214753 20940 139949 -180 05-сен-2014 3109217798 20940 139949 180 27-сен-2014 3109217801 20940 140478 200 27-сен-2014 3244215328 20940 140478 -200 12-сен-2014 3244216510 20940 141133 -180 19-сен-2014 3413217807 20940 141133 180 27-сен-2014 3413216518 20940 141134 -180 19-сен-2014 3415217803 20940 141134 180 27-сен-2014 3415217802 20940 141135 180 27-сен-2014 3417216527 20940 141135 -180 19-сен-2014 3417217804 20940 141136 180 27-сен-2014 3419216532 20940 141136 -180 19-сен-2014 3419217805 20940 141137 180 27-сен-2014 3425216548 20940 141137 -180 19-сен-2014 3425216561 20940 141138 -180 19-сен-2014 3426217806 20940 141138 180 27-сен-2014 3426217713 20940 141458 -180 26-сен-2014 3851 217714 20940 141459 -180 26-сен-2014 3852 Выделенные жирным означают, что по этим позициям оплаты не было. (Нет пары у нее) И те, что жирным выделены должны отобразиться через запятую и показать суммарный долг по этим позициям. Т.е. хочу получить вот такой результат. (в столбце MS_NUMBER вместо точек - запятая) CLIENT MS_NUMBER TR_DATA FIO TELEFON ADRES DOLG20940 3851. 3852 26.сен.14 Андросов А. С. 24392 г. НеЗнай Где ул.Галактионова д.58 кв.6 -36013504 3491. 3493 23.сен.14 Бутакова Л. В. 50199 г. ЗнайГде ул.5 Линия д.14 кв. -400 Я попытался самостоятельно написать селект, который по идее должен дать результат как в приведенной таблице. Написал... Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Возвращает мне вот такую фигню.... (хотя это может и не фигня, а фигня в моей голове) CLIENT MS_NUMBER TR_DATA FIO TELEFON ADRES DOLG20940 2126.3107.3108.3109.3244.3413.3415.3417.3419.3425.3426.3851.3852 05-Сен-2014.12-Сен-2014.19-Сен-2014.26-Сен-2014.27-Сен-2014 Андросов А. С. 24392 г. ЗнайГде ул.Галактионова д.58 кв.6 -36013504 3190.3279.3491.3493 10-Сен-2014.15-Сен-2014.23-Сен-2014.24-Сен-2014 Бутакова Л. В. 50199 г. НеЗнайГде ул.5 Линия д.14 кв. -400 Меня это не устраивает. Как мне привести в тот вид, который показан в первой табличке? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 18:35 |
|
listagg+distinct
|
|||
---|---|---|---|
#18+
RenVold, слово аналитика у тя с чемнить еще ассоциируется? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 18:45 |
|
listagg+distinct
|
|||
---|---|---|---|
#18+
ПроктологъRenVold, слово аналитика у тя с чемнить еще ассоциируется? Ассоциируется, ассоциируется! Но я не могу что то как то правильно составить . Помогли бы лучше, чем сарказм проявляли ((( ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 18:51 |
|
listagg+distinct
|
|||
---|---|---|---|
#18+
Хотя бы подскажите в каком направлении копать. Какую аналитику использовать ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 19:12 |
|
listagg+distinct
|
|||
---|---|---|---|
#18+
На форуме есть некто guest_smetanka. Она всем дает. Если же дождаться невтерпеж, то даю подсказку: вынеси мусор один единственный конкат во внешний подзапрос ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 19:28 |
|
listagg+distinct
|
|||
---|---|---|---|
#18+
RenVoldКакую аналитику использоватьС аналитикой пожалуй будет излишне. Она будет считать все. А тут только долгами ограничиться хватит ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 19:34 |
|
listagg+distinct
|
|||
---|---|---|---|
#18+
Проктологъ, давай, чувак, путай его, чем дольше RenVold пишет запрос, тем больше времени у Андросова и Бутаковой достать деньги ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 19:37 |
|
listagg+distinct
|
|||
---|---|---|---|
#18+
MonteCarlosПроктологъ, давай, чувак, путай его, чем дольше RenVold пишет запрос, тем больше времени у Андросова и Бутаковой достать деньгиПутать будеш свою бабушку объясняя куда девалась ее пенсия, а разжевывать и ротврот передавать кашицу - свои птенцам когда вырастешь ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 19:46 |
|
listagg+distinct
|
|||
---|---|---|---|
#18+
Жалко, что LISTAGG не дружит с DISTINCT ((( мне б проще задачу было бы решить.... Есть у кого какие мысли? По идее надо какой то сложнющий запрос строить. Логика такая. 1 ) Находим все записи, которые попадают в период с 01.09.2014 по 30.09.2014. 2) Проходимся по каждому клиенту, группируем все записи клиента по id_message и суммируем SUM(SUMMA) по каждой группе id_message - если плюс на минус, не берем. Если минус - берем (если плюс - тоже не берем. только минусы) 3) Склеиваем через запятую все найденные записи 4) Также делаем автосумму по всем id_message, которые принадлежат одному клиенту. Как то так... Такой набросок плана. А вот как изящно и красиво написать селект ... чет никак ((( Хотя в PL/SQL Я вроде не чайник (((( ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 19:50 |
|
listagg+distinct
|
|||
---|---|---|---|
#18+
ПроктологъНа форуме есть некто guest_smetanka. Она всем дает. Если же дождаться невтерпеж, то даю подсказку: вынеси мусор один единственный конкат во внешний подзапрос Щас попробую.... Ты наверное, имел ввиду "лишний конкат" - это ".... wm_concat (distinct trunc(tr.data_transact)) AS tr_data ..." ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 19:54 |
|
listagg+distinct
|
|||
---|---|---|---|
#18+
ПроктологъRenVoldКакую аналитику использоватьС аналитикой пожалуй будет излишне. Она будет считать все. А тут только долгами ограничиться хватит Неет! Не только! Обязательно нужны через запятую все номера, которые заказал клиент (чтоб он видел за какие номера он платит), его фио, адрес (куда квитанцию прислать) ну и конечно же его общий долг за взятый период ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2014, 19:56 |
|
|
start [/forum/topic.php?fid=52&msg=38808679&tid=1881599]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 154ms |
0 / 0 |