powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вывести с listagg только уникальные?
9 сообщений из 9, страница 1 из 1
Вывести с listagg только уникальные?
    #39421063
Nobody1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я тут пишу периодически отчеты по проделанной работе и, в частности, заполняю пункт по управлению пространством баз. Обычно это представляет из себя перечень табличных пространств, в которых была выявлена приближающаяся нехватка свободного места, количество добавленных датафайлов и перечень их полных имен. Получаю я эти данные примерно таким запросом:

Код: plsql
1.
2.
3.
4.
5.
6.
select 
count(*) num_files,
         listagg(tablespace_name,', ') within group (order by tablespace_name) ts_list,
         listagg(name,', ') within group (order by rownum) files_list
from v$datafile inner join dba_data_files on file_id=file#
where creation_time between sysdate - 31 and sysdate - 1



Незадача у меня в том, что если в одно табличное пространство добавлялось более одного файла, то перечень табличных пространств включает в себя повторяющиеся. Хотелось бы от этих повторений избавиться без ручной правки перечня в отчете. Как это можно сделать, подскажите, пожалуйста.
...
Рейтинг: 0 / 0
Вывести с listagg только уникальные?
    #39421072
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nobody1111,

1) написать свою ф-цию
2) wm_concat
3) развернуть убрать дубликати, свернуть (подзапрос)
4) regexp listagg+distinct

зы
ХМЛ?


.....
stax
...
Рейтинг: 0 / 0
Вывести с listagg только уникальные?
    #39421075
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
with t as (
           select  case row_number() over(partition by tablespace_name order by 1)
                     when 1 then tablespace_name
                   end tablespace_name,
                   name
             from  v$datafile,
                   dba_data_files
             where file_id = file#
               and creation_time between sysdate - 31 and sysdate - 1
          )
select  count(*) num_files,
        listagg(tablespace_name,', ') within group (order by tablespace_name) ts_list,
        listagg(name,', ') within group (order by rownum) files_list
  from  t
/



SY.
...
Рейтинг: 0 / 0
Вывести с listagg только уникальные?
    #39421142
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nobody1111Обычно это представляет из себя перечень табличных пространств, в которых была выявлена приближающаяся нехватка свободного места, количество добавленных датафайлов и перечень их полных имен.Чем бы дитя не тешилось :) Это просиживание штанов.
...
Рейтинг: 0 / 0
Вывести с listagg только уникальные?
    #39421176
Nobody1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stax.., спасибо за варианты
...только wm_concat в 12с упразднили.

SY, красота! И работает. Спасибо большое!

Elic, что-то мне подсказывает, что тебе никогда не приходилось работать на госбюджет. Без отчетности эта работа невозможна, это неизбежное зло. И SLA это не отменяет, и то, и другое должно быть без вариантов. Именно чтобы эту работу по составлению отчетов минимизировать, и оставить больше времени на прямые обязанности, я и поднял такой вопрос.
...
Рейтинг: 0 / 0
Вывести с listagg только уникальные?
    #39421730
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nobody1111stax.., спасибо за варианты
...только wm_concat в 12с упразднили.


создать как пользовательскую

.....
stax
...
Рейтинг: 0 / 0
Вывести с listagg только уникальные?
    #39421756
мимо шел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stax..Nobody1111...только wm_concat в 12с упразднили.
создать как пользовательскую
Взоржал
...
Рейтинг: 0 / 0
Вывести с listagg только уникальные?
    #39422128
Иль нет?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мимо шел,

Воистину взоржал?
...
Рейтинг: 0 / 0
Вывести с listagg только уникальные?
    #39422143
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иль нет?мимо шел,

Воистину взоржал?

я опять что-то сморозил?

.....
stax
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вывести с listagg только уникальные?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]