Вторник, 23.07.2024, 11:49

  • Полезные Скрипты Oracle
Главная Книги Быстрый Поиск О Сайте

Oracle
PL/SQL
Решения для Oracle
ПОИСК
Быстрый поиск
 Unpivot
Использование UNPIVOT отметка в SQL (Oracle 11g)

 



Начальный запрос имеет следующий вид :

Select 5 v1 , 10 v2 , 11 v3   From dual   
Union  
Select 50 v1 , 100 v2 , 110 v3   From dual

Резултат :

 

 

V1 

V2

V3

1

 

5

10

11

2

 

50

100

110


С помощью оператора UNPIVOT можно трансформировать высше указанный запрос :


Select Rownum NewRN,rn,cols, vals
From
Select Rownum rn,table1.*
       From (
                  Select 5 v1 , 10 v2 , 11 v3   From dual
                  Union
                  Select 50 v1 , 100 v2 , 110 v3   From dual
                  )  table1
) table1
UnPivot include nulls (Vals for cols in(v1 , v2  ,v3));
-----------------------------------------------------------------
2. с оператором with : 
With 
t as (
      Select Rownum rn,table1.*
             From (
                        Select 5 v1 , 10 v2 , 11 v3   From dual
                        Union
                        Select 50 v1 , 100 v2 , 110 v3   From dual
                        )  table1
      )
Select Rownum NewRN,rn,cols, vals
From UnPivot include nulls (Vals for cols in(v1 , v2  ,v3));

Резултат :

NEWRN

 

RN

COLS

VALS

1

 

1

V1

5

2

 

1

V2

10

3

 

1

V3

11

4

 

2

V1

50

5

 

2

V2

100

6

 

2

V3

110







Copyright sql.ucoz.com © 2024
Оцените сайт

Всего ответов: 51