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

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

....
stax
...
Рейтинг: 0 / 0
11.12.2017, 16:21
    #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
11.12.2017, 17:27
    #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
11.12.2017, 18:33
    #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
12.12.2017, 11:19
    #39568189
Lilzen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
транспонирование строк в столбцы
у меня на серваке 9 оракл там нет pivot
...
Рейтинг: 0 / 0
12.12.2017, 11:21
    #39568193
Lilzen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
транспонирование строк в столбцы
а chemuto..) это условие которое на весь запрос наложено я просто написал структуру того запроса что надо повернуть в кратце
...
Рейтинг: 0 / 0
12.12.2017, 11:56
    #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
12.12.2017, 12:05
    #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
12.12.2017, 12:30
    #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
12.12.2017, 13:23
    #39568292
123йй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
транспонирование строк в столбцы
Mossна 9i вроде как сработает. (не пробовал.) если нет, то сори..
А зачем козе баян xml ?
...
Рейтинг: 0 / 0
12.12.2017, 16:31
    #39568446
Lilzen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
транспонирование строк в столбцы
может мне кто нибудь тогда на вот этом примере показать а то я сломал себе мозг окончательно, как применить то что вы написали....
...
Рейтинг: 0 / 0
12.12.2017, 17:05
    #39568486
rf_mail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
транспонирование строк в столбцы
Lilzenможет мне кто нибудь тогда на вот этом примере показать а то я сломал себе мозг окончательно, как применить то что вы написали....
все показано, осталось скрипты в вашу БД Oracle 9i перенести и выполнить
sql.ru faq

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

Где пример?


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

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

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

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

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


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