powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / вопрос про pivot
12 сообщений из 12, страница 1 из 1
вопрос про pivot
    #39499407
maxwait
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, подскажите пожалуйста, как спивотить, чтобы получить результат в строку.
январь, февраль и т.д.

select TO_CHAR(add_months(to_date(t.date_from,'dd.mm.yyyy'),0), 'MONTH', 'NLS_DATE_LANGUAGE = RUSSIAN') as mmm
from (
select decode(level,1,d1,trunc(add_months(d1,level-1),'mm')) as date_from
from (
select to_date('01.01.2017','dd.mm.yyyy') d1,
to_date('01.08.2017','dd.mm.yyyy') d2
from dual
)
connect by add_months(trunc(d1,'mm'),level-1) <= d2
) t
...
Рейтинг: 0 / 0
вопрос про pivot
    #39499417
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxwait,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
  1  with t as (
  2  select TO_CHAR(add_months(to_date(t.date_from,'dd.mm.yyyy'),0), 'FMMONTH', 'NLS_DATE_LANGUAGE = RUSSIAN') as mmm
  3  ,date_from
  4  from (
  5   select decode(level,1,d1,trunc(add_months(d1,level-1),'mm')) as date_from
  6   from (
  7   select to_date('01.01.2017','dd.mm.yyyy') d1,
  8   to_date('01.08.2017','dd.mm.yyyy') d2
  9   from dual
 10   )
 11   connect by add_months(trunc(d1,'mm'),level-1) <= d2
 12  )t
 13  )
 14* select listagg(mmm,'; ') within group(order by date_from) s  from t
SQL> /

S
--------------------------------------------------------------------------------
ЯНВАРЬ; ФЕВРАЛЬ; МАРТ; АПРЕЛЬ; МАЙ; ИЮНЬ; ИЮЛЬ; АВГУСТ



.....
stax
...
Рейтинг: 0 / 0
вопрос про pivot
    #39499422
maxwait
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,
результат получается в одно поле, а мне необходимо, чтобы каждый месяц был в отдельном поле.
про лист listagg я знаю, но он не подходит для этого решения.
результат
январь | февраль | март | апрель |
----------------------------------------
январь | февраль | март | апрель |
...
Рейтинг: 0 / 0
вопрос про pivot
    #39499424
maxwait
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxwait,

тут я так понимаю именно развернуть нужно табличку чтобы получить необходимый результат. но PIVOT вроде как я знаю работает только с агрегатными функциями.
...
Рейтинг: 0 / 0
вопрос про pivot
    #39499426
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxwait,

а поиск по форуму ничего не дал ?
т.к кол-во кол-во колонок у тебя "плавающее", то
1 dsql
2 xml
...
...
Рейтинг: 0 / 0
вопрос про pivot
    #39499428
maxwait
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
123йй,
dsql - это Dynamic sql ?
если да , то понял, спасибо. попробую написать функцию.
...
Рейтинг: 0 / 0
вопрос про pivot
    #39499436
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxwaitStax,
результат получается в одно поле, а мне необходимо, чтобы каждый месяц был в отдельном поле.
про лист listagg я знаю, но он не подходит для этого решения.
результат
январь | февраль | март | апрель |
----------------------------------------
январь | февраль | март | апрель |

авторДобрый день, подскажите пожалуйста, как спивотить, чтобы получить результат в строку .
январь, февраль и т.д.


месяцев 12, півотом 12 клолонок
если критично с "пустыми", удалять на клиенте

мона строку разрисовать под колонки с фисированной длиной

иначе 20696841

.....
stax
...
Рейтинг: 0 / 0
вопрос про pivot
    #39499440
maxwait
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

пустые не критично.
...
Рейтинг: 0 / 0
вопрос про pivot
    #39499468
Whiplashock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select * from (
    select TO_CHAR(add_months(to_date(t.date_from,'dd.mm.yyyy'),0), 'MONTH', 'NLS_DATE_LANGUAGE = RUSSIAN') as mmm
    from (
    select decode(level,1,d1,trunc(add_months(d1,level-1),'mm')) as date_from
    from (
    select to_date('01.01.2017','dd.mm.yyyy') d1,
    to_date('01.08.2017','dd.mm.yyyy') d2
    from dual
    )
    connect by add_months(trunc(d1,'mm'),level-1) <= d2
    ) t
)
pivot (max(mmm) for mmm in ('ЯНВАРЬ' month1, 'ФЕВРАЛЬ' month2)) 
...
Рейтинг: 0 / 0
вопрос про pivot
    #39499472
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxwaitStax,

пустые не критично.
тогда сделайте пивотом 12-колонок

в зависимости от требованиий можно добавить 13-у колонку - год

.....
stax
...
Рейтинг: 0 / 0
вопрос про pivot
    #39499473
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Whiplashock
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select * from (
    select TO_CHAR(add_months(to_date(t.date_from,'dd.mm.yyyy'),0), 'MONTH', 'NLS_DATE_LANGUAGE = RUSSIAN') as mmm
    from (
    select decode(level,1,d1,trunc(add_months(d1,level-1),'mm')) as date_from
    from (
    select to_date('01.01.2017','dd.mm.yyyy') d1,
    to_date('01.08.2017','dd.mm.yyyy') d2
    from dual
    )
    connect by add_months(trunc(d1,'mm'),level-1) <= d2
    ) t
)
pivot (max(mmm) for mmm in ('ЯНВАРЬ' month1, 'ФЕВРАЛЬ' month2)) 



пробелы

.....
stax
...
Рейтинг: 0 / 0
вопрос про pivot
    #39499511
maxwait
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

СПАСИБО!
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / вопрос про pivot
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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