powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Динамический PIVOT
9 сообщений из 9, страница 1 из 1
Динамический PIVOT
    #39780842
dMazay82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите можно сделать так:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
with t1 as(
select '1' id, 'a' point, 'RunDate' param, '01.01.2001 01:12:11' val from dual union
select '1' id, 'a' point, 'param1a' param, '12' val from dual union
select '1' id, 'a' point, 'panam2a' param, 'Value' val from dual union
select '2' id, 'a2' point, 'RunDate' param, '02.02.2003 22:22:22' val from dual union
select '2' id, 'a2' point, 'param1a2' param, 'Test' val from dual union
select '2' id, 'a2' point, 'panam2a2' param, '15' val from dual union
select 'n' id, 'an' point, 'RunDate' param, '02.02.2003 22:22:22' val from dual union
select 'n' id, 'an' point, 'param1an' param, 'Test' val from dual union
select 'n' id, 'an' point, 'panam2an' param, '15' val from dual union
select 'n' id, 'an' point, 'panam3an' param, 'что-то' val from dual 
)
select * from t1;



Point'ов может быть сколько угодно, параметров тоже.

В конечном итоге хотелось бы получить возможность написать, звездочка фром тумбочка с условием.
Идеально, чтоб можно было во вьюху запихнуть, или это не реально?

select ..... from t1 where point = a and id >xx and param1a = Значение ;

результат
id point RunDate param1a panam2a1 a 01.01.2001 01:12:11 12Value.. a Все что попадетпод условие

select ..... from t1 where point = т and id >xx and panam2an = Значение ;
id point RunDate param1an panam2anpanam3ann an 02.02.2003 22:22:22 Test15 что-то.. an Все что попадетпод условие
...
Рейтинг: 0 / 0
Динамический PIVOT
    #39780851
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dMazay82Идеально, чтоб можно было во вьюху запихнуть, или это не реально?Что должно было быть в *_tab_columns?
...
Рейтинг: 0 / 0
Динамический PIVOT
    #39780876
dMazay82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,
в идеале динамический набор, который вернется для конкретного point, если я правильно понял вопрос
...
Рейтинг: 0 / 0
Динамический PIVOT
    #39780917
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dMazay82если я правильно понял вопросНеправильно.
...
Рейтинг: 0 / 0
Динамический PIVOT
    #39780923
dMazay82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,
Можно тогда по конкретнее?
...
Рейтинг: 0 / 0
Динамический PIVOT
    #39780929
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dMazay82это не реально
...
Рейтинг: 0 / 0
Динамический PIVOT
    #39780937
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dMazay82Можно тогда по конкретнее?Конкретнее некуда.
...
Рейтинг: 0 / 0
Динамический PIVOT
    #39780945
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dMazay82Point'ов может быть сколько угодно, параметров тоже.

И опять PIVOT

1) делать на клиете - не подходит
3) запрос формировать динамически -не походит
2) хмл pivot - не уверен что удастся протолкнуть (запихнуть) условие аж "в хмл"
4) другое - ???

.....
stax
...
Рейтинг: 0 / 0
Динамический PIVOT
    #39780980
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dMazay82,
Вы знаете ...у меня тоже такая была проблема...Посмотрите в аттачменте...отчет Шахматка.. где неизвестно заранее количество столбцов.
Я решил это своим генератором отчетов...мы его доработали...сначала Высчитывается общее количество столбцов и их имена...потом макроименем нон вставляется в запрос.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
select * from (
select  grouping(g.name) gr,decode(g.name,null,'Итого',g.name) goodsname,decode(g.name,null,null,sum(dc.quantity)) quantity,
decode(g.name,null,null,g.FULLEXIT) fullexit,
g1.name goodsname1,sum(dc1.quantity) quantity1
from (select sum(quantity) quantity,goods_id,id from
 &shema.DOCUMENTSPRODUCECONTENTS dd where dd.document_id=:titles_id
 and dd.coming_id is  null group by id,goods_id)  dc,
(select sum(quantity) quantity,goods_id,coming_id from
 &shema.DOCUMENTSPRODUCECONTENTS dd1 where dd1.document_id=:titles_id
 and dd1.coming_id is not null group by coming_id,goods_id) dc1,
&shema.goods g,&shema.goods g1
where
 dc1.goods_id=g1.id and dc.goods_id=g.id
and dc.id=dc1.coming_id
group by rollup(g.name), g.FULLEXIT, g1.name
)
pivot (
 sum(quantity1)  for goodsname1
in (&crosspivot)
)
order by gr,goodsname



Вот вот это
Код: plsql
1.
2.
3.
4.
5.
6.
pivot (
 sum(quantity1)  for goodsname1
in (&crosspivot)
)

[color=yellow]crosspivot[/color]


crosspivot заранее рассчитывается и сюда вставляется.
Если найдете способ динамически отпишитесь мне тоже будет интересно.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Динамический PIVOT
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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