pivot函式:行轉列函式
格式pivot(任一聚合函式 for 需專列的值所在列名 in (需轉為列名的值))
pivot函式位於from集合後
示例示例1:
select *
from emp
pivot(
sum(nvl(sal,0)
)for deptno in(10
as accounting,
20as research,
30as sales));
# 結果
17654 martin salesman 7698
1981-09
-281400.00
1250
27698 blake manager 7839
1981-05
-012850
37934 miller clerk 7782
1982-01
-231300
47521 ward salesman 7698
1981-02
-22500.00
1250
57566 jones manager 7839
1981-04
-022975
67844 turner salesman 7698
1981-09
-080.00
1500
77900 james clerk 7698
1981-12
-039508
7839 king president 1981-11
-175000
97876 adams clerk 7788
1987-05
-231100
107902 ford analyst 7566
1981-12
-033000
117788 scott analyst 7566
1987-04
-193000
127782 clark manager 7839
1981-06
-092450
137369 smith clerk 7902
1980-12
-1780014
7499 allen salesman 7698
1981-02
-20300.00
1600
示例2:
select *
from
(select deptno,
sum(nvl(sal,0)
) sal from emp group by deptno)
pivot(
sum(nvl(sal,0)
)for deptno in(10
as accounting,
20as research,
30as sales));
# 結果
18750
10875
9400
注意:這裡select子句後面都使用 『 * 』而不是指定顯示列來顯示。
unpivot函式:列轉行函式
格式語法:unpivot(新增行的數值列名 for 新增行的屬性列名 in (需轉為行的列名))。
unpivot函式位於from集合後。
示例
select empno, ename, job, mgr, hiredate, deptno,
type
, value
from emp unpivot(value for
type
in(sal, comm));
# 結果
17369 smith clerk 7902
1980-12
-1720 sal 800.00
27499 allen salesman 7698
1981-02
-2030 sal 1600.00
37499 allen salesman 7698
1981-02
-2030 comm 300.00
47521 ward salesman 7698
1981-02
-2230 sal 1250.00
57521 ward salesman 7698
1981-02
-2230 comm 500.00
67566 jones manager 7839
1981-04
-0220 sal 2975.00
77654 martin salesman 7698
1981-09
-2830 sal 1250.00
87654 martin salesman 7698
1981-09
-2830 comm 1400.00
97698 blake manager 7839
1981-05
-0130 sal 2850.00
107782 clark manager 7839
1981-06
-0910 sal 2450.00
117788 scott analyst 7566
1987-04
-1920 sal 3000.00
127839 king president 1981-11
-1710 sal 5000.00
137844 turner salesman 7698
1981-09
-0830 sal 1500.00
147844 turner salesman 7698
1981-09
-0830 comm 0.00
157876 adams clerk 7788
1987-05
-2320 sal 1100.00
167900 james clerk 7698
1981-12
-0330 sal 950.00
177902 ford analyst 7566
1981-12
-0320 sal 3000.00
187934 miller clerk 7782
1982-01
-2310 sal 1300.00
oracle之行列互轉
建立臨時表 temp with tempas select 湖北省 nation,武漢市 city,first rank from dual union allselect 湖北省 nation,宜昌市 city,second rank from dual union allselect 湖北省 n...
Oracle行列互換總結
oracle行列互換總結 1.多行換成一行 col1 col2 col1 col2 a 1 a 2 轉換後 a 1,2,3 a 3 a.sys connect by path 函式 select name,ltrim max sys connect by path userid,userid fro...
oracle 常用寫法 行列互換
oracle 11g 行列互換 pivot 和 unpivot 說明 在oracle 11g中,oracle 又增加了2個查詢 pivot 行轉列 和unpivot 列轉行 參考 google 一下,網上有一篇比較詳細的文件 pivot 列轉行 測試資料 id,型別名稱,銷售數量 案例 根據水果的型...