powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / транспонирование строк в столбцы
19 сообщений из 19, страница 1 из 1
транспонирование строк в столбцы
    #39567742
Lilzen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
приветствую орокловцы))) Подскажите добрые люди есть ли на 9 оракле что то похожее функции pivot которой можно транспонировать строки в столбцы???!!! заранее спасибо!!
...
Рейтинг: 0 / 0
транспонирование строк в столбцы
    #39567749
max(decode(.....
...
Рейтинг: 0 / 0
транспонирование строк в столбцы
    #39567768
Group By
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По старинкеmax(decode(.....
Плюс Я!!
...
Рейтинг: 0 / 0
транспонирование строк в столбцы
    #39567777
Lilzen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можете пример скинуть что бы синтаксис понять
...
Рейтинг: 0 / 0
транспонирование строк в столбцы
    #39567783
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lilzen,
http://www.sql.ru/faq/faq_topic.aspx?fid=210
FAQ
Oracle
SQL

Транспонирование строк в столбцы

....
stax
...
Рейтинг: 0 / 0
транспонирование строк в столбцы
    #39567785
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
with t as (select 1 row#, 'col1' key#, 'row1-col1' val, 1 nval
from dual union all select 1, 'col2', 'row1-col2', 2
from dual union all select 2, 'col1', 'row2-col1', 3
from dual union all select 2, 'col2', 'row2-col2', 4
from dual)
select row#
     , max(decode(key#,'col1',val)) col1
     , max(decode(key#,'col2',val)) col2
     , sum(decode(key#,'col1',nval)) col1#sum
     , sum(decode(key#,'col2',nval)) col2#sum
from t
group by row#
;
...
Рейтинг: 0 / 0
транспонирование строк в столбцы
    #39567847
Lilzen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ребят для тупых объясните пожалуйста тогда есть код примерно такой

авторselect
sum(CASE when p1 in (nnnn) then p1 +d1 else 0 end) gr1,
sum(CASE when p1 in (nnnn) then p1 +d1 else 0 end) gr2,
sum(CASE when p1 in (nnnn) then p1 +d1 else 0 end) gr3
from table
where usl=chemuto;


так вот кейс выдает табличные значения в строку... а нужда требует что бы они были в столбец и к этому всему оч желательно что бы второй столбец был вторым таким же запросом... что бы можно было получить полноценную матрицу числовую.. для альнейшей вставки ее в екселевскую таблицу.
...
Рейтинг: 0 / 0
транспонирование строк в столбцы
    #39567911
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lilzen,

где Вы ето взяли?
ето какой-то странный chemuto

ps
смысл такой
"Код группировки"
,sum(CASE when p1 = 'признак колонки 1' then "поле суммирования" end)
,sum(CASE when p1 = 'признак колонки 2' then "поле суммирования" end)
...

group by "Код группировки"

зы
нарисуйте select с pivot и Вам накидают с decode/case

.....
stax
...
Рейтинг: 0 / 0
транспонирование строк в столбцы
    #39568189
Lilzen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у меня на серваке 9 оракл там нет pivot
...
Рейтинг: 0 / 0
транспонирование строк в столбцы
    #39568193
Lilzen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а chemuto..) это условие которое на весь запрос наложено я просто написал структуру того запроса что надо повернуть в кратце
...
Рейтинг: 0 / 0
транспонирование строк в столбцы
    #39568224
AnSi_Sr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
with s as (select gr1, ... from...)
select s.gr1 from s
union
select s.gr2 from s
...
...
Рейтинг: 0 / 0
транспонирование строк в столбцы
    #39568233
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lilzenу меня на серваке 9 оракл там нет pivot
Код: 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.
  1* select * from emp order by deptno,sal
SQL> /

     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
      7934 MILLER     CLERK           7782 23.01.82       1300                    10
      7782 CLARK      MANAGER         7839 09.06.81       2450                    10
      7839 KING       PRESIDENT            17.11.81       5000                    10
      7369 SMITH      CLERK           7902 17.12.80        800                    20
      7876 ADAMS      CLERK           7788 12.01.83       1100                    20
      7566 JONES      MANAGER         7839 02.04.81       2975                    20
      7788 SCOTT      ANALYST         7566 09.12.82       3000                    20
      7902 FORD       ANALYST         7566 03.12.81       3000                    20
      7900 JAMES      CLERK           7698 03.12.81        950                    30
      7654 MARTIN     SALESMAN        7698 28.09.81       1250       1400         30
      7521 WARD       SALESMAN        7698 22.02.81       1250        500         30
      7844 TURNER     SALESMAN        7698 08.09.81       1500                    30
      7499 ALLEN      SALESMAN        7698 20.02.81       1600        300         30
      7698 BLAKE      MANAGER         7839 01.05.81       2850                    30

14 rows selected.

SQL> select deptno
  2   ,sum(decode(job,'PRESIDENT',sal)) "PRESIDENT"
  3   ,sum(decode(job,'MANAGER',sal)) "MANAGER"
  4   ,sum(decode(job,'ANALYST',sal)) "ANALYST"
  5   ,sum(decode(job,'CLERK',sal)) "CLERK"
  6  from emp e
  7  group by deptno
  8  order by 1
  9  /

    DEPTNO  PRESIDENT    MANAGER    ANALYST      CLERK
---------- ---------- ---------- ---------- ----------
        10       5000       2450                  1300
        20                  2975       6000       1900
        30                  2850                   950



зи
SALESMAN умышленно забыл

....
stax
...
Рейтинг: 0 / 0
транспонирование строк в столбцы
    #39568249
Moss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на 9i вроде как сработает. (не пробовал.) если нет, то сори..

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
WITH a (div_id , deal_id ,deal_no ) AS (
SELECT 1  , 10 , 100  FROM dual UNION ALL
SELECT 1  , 20 , 200  FROM dual UNION ALL
SELECT 2  , 30 , 300  FROM dual UNION ALL
SELECT 2  , 40 , 400  FROM dual UNION ALL
SELECT 2  , 50 , 500  FROM dual )
 select z.div_id
       ,z.b.extract('//dealid[position()=1]/text()').getStringVal()  as dealid_1
       ,z.c.extract('//dealno[position()=1]/text()').getStringVal()  as dealno_1
       ,z.b.extract('//dealid[position()=2]/text()').getStringVal()  as dealid_2
       ,z.c.extract('//dealno[position()=2]/text()').getStringVal()  as dealno_2
       ,z.b.extract('//dealid[position()=3]/text()').getStringVal()  as dealid_3
       ,z.c.extract('//dealno[position()=3]/text()').getStringVal()  as dealno_3            
    from (select div_id                      
                ,XMLAGG(xmlelement("dealid", deal_id) ORDER BY deal_id ) as b
                ,XMLAGG(xmlelement("dealno", deal_no) ORDER BY deal_no ) as c
              from a
          group by div_id ) z
...
Рейтинг: 0 / 0
транспонирование строк в столбцы
    #39568292
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mossна 9i вроде как сработает. (не пробовал.) если нет, то сори..
А зачем козе баян xml ?
...
Рейтинг: 0 / 0
транспонирование строк в столбцы
    #39568446
Lilzen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
может мне кто нибудь тогда на вот этом примере показать а то я сломал себе мозг окончательно, как применить то что вы написали....
...
Рейтинг: 0 / 0
транспонирование строк в столбцы
    #39568486
Фотография rf_mail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lilzenможет мне кто нибудь тогда на вот этом примере показать а то я сломал себе мозг окончательно, как применить то что вы написали....
все показано, осталось скрипты в вашу БД Oracle 9i перенести и выполнить
sql.ru faq

для Oracle 11g
oracle example
...
Рейтинг: 0 / 0
транспонирование строк в столбцы
    #39568490
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lilzenможет мне кто нибудь тогда на вот этом примере показать а то я сломал себе мозг окончательно, как применить то что вы написали....

Где пример?


ps
Вы пример Виолины смотрели?
.....
stax
...
Рейтинг: 0 / 0
транспонирование строк в столбцы
    #39568779
Lilzen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
извините глупо получилось )) написать не написал а пример не скинул...
...
Рейтинг: 0 / 0
транспонирование строк в столбцы
    #39568916
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lilzen,

Ваш запрос возвращает три числа (одну строку с тремя полями, почему-то назваными str1,str2,str3)

одну строку транспонировать в столбцы никак

нарисуйте что в результате транспонирования Вы (или бухи) хотели бы получить

ps
мож для
p1_251va
p1_251vb
p1_251vc
p1_251vd
p1_251ve
есть справочнік, в котором есть признак как/куда суммировать
тогда в запросе не придется перечислять коды
.....
stax
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / транспонирование строк в столбцы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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