oracle pivot,unpivot基本語法

2021-09-05 12:14:46 字數 2560 閱讀 6761

unpivot

xml老方法

用於行轉列。在11g之前,一般用這樣的方法來做

對於這樣的表

select

1 id,

'a1' typ,

1 val from dual union

allselect1,

'a2'

,2 val from dual union

allselect1,

'a3'

,3 val from dual union

allselect2,

'a1'

,4 val from dual union

allselect2,

'a3'

,5 val from dual

id

typval1a1

11a22

1a332

a142a3

5我現在想要將每乙個id所對應的typ橫著顯示,需要這樣寫

with tab1 as

(select

1 id,

'a1' typ,

1 val from dual union

allselect1,

'a2'

,2 val from dual union

allselect1,

'a3'

,3 val from dual union

allselect2,

'a1'

,4 val from dual union

allselect2,

'a3'

,5 val from dual

)select id,

max(decode(typ,

'a1'

, val)

) a1,

max(decode(typ,

'a2'

, val)

) a2,

max(decode(typ,

'a3'

, val)

) a3

from tab1

group

by id

;

id

a1a2a31

1232

45新方法適用pivot,可以這樣寫

with tab1 as

(select

1 id,

'a1' typ,

1 val from dual union

allselect1,

'a2'

,2 val from dual union

allselect1,

'a3'

,3 val from dual union

allselect2,

'a1'

,4 val from dual union

allselect2,

'a3'

,5 val from dual

)select

*from tab1

pivot

(max

(val)

for typ in

('a1'

as aaa,

'a2'

as a2,

'a3'))

;

id

aaaa2

『a3』11

2324

5重功能上來說,可以看成是pivot的逆運算,只是行列變換所需的列會由於手動指定的關係而缺失或者改變一些值。

with tab1 as

(select

1 id,

'a1' typ,

1 val from dual union

allselect1,

'a2'

,2 val from dual union

allselect1,

'a3'

,3 val from dual union

allselect2,

'a1'

,4 val from dual union

allselect2,

'a3'

,5 val from dual

)select

*from tab1

pivot

(max

(val)

for typ in

('a1'

as aaa,

'a2'

as a2,

'a3' a3)

)unpivot

(val for typ in

(aaa as

'a', a2 as

'b', a3 as

'c')

);

id

typval1a

11b2

1c32

a42c

5經常看到有人問怎麼把in中的部分寫成動態的,我通過官方文件得知,對於以xml格式儲存的資料是可以做到的。不過從來沒遇到的那樣的表,先不研究了。

mysql degree MySQL的基本語法

今天是開學第三天,算是正式開始學習了吧。第一天基本是老師在向我們介紹軟體測試要了解什麼方面的知識,以後要做些什麼。第二天主要是練習了一下怎麼寫需求文件,感覺這個確實挺難寫的,畢竟我文字表達能力感覺不是太好,只能說以後慢慢練習吧。今天學了mysql的幾個基本語法,感覺確實挺蛋疼的,最主要是沒有提示這一...

python語 Python 基本語法

python 語法 1 列印 輸入用print 例如 print hello word python 3中可以直接列印中文,並且語法不一樣,python 3中有 2 如何定義變數名 定義變數名有以幾個條件 1 開頭必須是字母 or 下劃線 2 變數名必須是由字數 or 數字 or 下劃線的組成,不可...

mongodb入門之mongodb基本語法

主要介紹下mongodb的基本語法,增刪改查等 我們都熟悉mysql和oracle的基本操作,這裡介紹mongodb的基本語法 首先要比較下mysql和mongodb的差別 mysql和oracle都有例項的概念,即資料庫例項。而mongodb同樣有例項的概念,只是初始化預設提供test資料庫 mo...