列轉行聚合的簡單實現ORACLE WM_CONCAT LISTAGG函式
轉載地址:
列轉行聚合的簡單實現ORACLE WM_CONCAT LISTAGG函式
專案中有個需求,將關聯出來的資料以特定的欄位將其他某一自動聚合。例子如下:
1 B1
1 B2
1 B3
2 B4
2 B5
3 B6
to
1 B1,B2,B3
2 B4,B5
3 B6
拿到手就想到用儲存過程,其實還有更簡單的方式。那就是oracle 提供的字串聚合函式。
WM_CONCAT Built-in Function (Not Supported)
If you are not running 11g Release 2, but are running a version of the database where the WM_CONCAT function is present, then it is a zero effort solution as it performs the aggregation for you. It is actually an example of a user defined aggregate function described below, but have done all the work for you.
LISTAGG Analystic Function in 11g Release 2
The LISTAGG analytic function was introduced in Oracle 11g Release 2, making it very easy to aggregate strings. The nice thing about this function is it also allows us to order the elements in the concatenated list. If you are using 11g Release 2 you should use this function for string aggregation.
Example 如下:
CREATE TABLE "TESTAGG"
(
"A" VARCHAR2(20 BYTE),
"B" VARCHAR2(20 BYTE)
)
INSERT INTO "TESTAGG" (A, B) VALUES ('1', 'B1')
INSERT INTO "TESTAGG" (A, B) VALUES ('1', 'B2')
INSERT INTO "TESTAGG" (A, B) VALUES ('1', 'B3')
INSERT INTO "TESTAGG" (A, B) VALUES ('2', 'B4')
INSERT INTO "TESTAGG" (A, B) VALUES ('2', 'B5')
INSERT INTO "TESTAGG" (A, B) VALUES ('3', 'B6')
select * from testAgg
1 B1
1 B2
1 B3
2 B4
2 B5
3 B6
select a ,wm_concat (b) as policinams from testagg group by a order by a
select a ,LISTAGG(b,',' ) within group(order by a) as b from testagg group by
1 B1,B2,B3
2 B4,B5
3 B6
自己試驗的例子:
select grantee,wm_concat(granted_role) as grante_role from dba_role_prives group by grantee;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28371090/viewspace-768771/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 11g 新聚集函式listagg實現列轉行Oracle函式
- 用listagg函式分組實現列轉行函式
- 【函式】Oracle12c 列轉行函式使用listagg函式Oracle
- 使用Oracle 11g函式Pivot實現資料聚合行轉列Oracle函式
- Oracle 11g Pivot函式實現行轉列Oracle函式
- Oracle行轉列的函式Oracle函式
- Oracle行轉列函式Oracle函式
- Oracle 11g使用UNPIVOT函式實現“列轉行”Oracle函式
- atoi函式簡單實現函式
- oracle wm_concat(column)函式的使用Oracle函式
- Oracle聚合函式/分析函式Oracle函式
- LISTAGG 函式函式
- wm_concat函式與oracle版本函式Oracle
- 一個簡單的oracle函式返回陣列的例子Oracle函式陣列
- js中trim函式的簡單實現JS函式
- ORACLE單行函式與多行函式之五:轉換函式示例Oracle函式
- Hive行轉列函式Hive函式
- ORACLE中的單行函式Oracle函式
- wm_concat函式函式
- Oracle OCP(04):聚合函式Oracle函式
- Oracle 聚合函式詳解Oracle函式
- oracle 自定義聚合函式Oracle函式
- ORACLE 字串聚合函式 strCatOracle字串函式
- 【SQL 分析函式】wm_concat 行列轉換SQL函式
- oracle 10g函式大全--聚合函式Oracle 10g函式
- Oracle11.2新特性之listagg函式Oracle函式
- ORACLE中的單行函式 (2)Oracle函式
- oracle中的單行函式(三)Oracle函式
- oracle中的單行函式(二)Oracle函式
- oracle中的單行函式(一)Oracle函式
- Oracle中coalesce函式的簡單理解Oracle函式
- oracle中聚合函式RANK和dense_rank的使用(轉)Oracle函式
- ClickHouse原始碼筆記1:聚合函式的實現原始碼筆記函式
- 【函式】Oracle中聚合函式rank()使用方法函式Oracle
- Oracle沒有WM_CONCAT函式的解決辦法Oracle函式
- 用ORACLE分析函式實現行列轉換Oracle函式
- Oracle單行函式詳解Oracle函式
- ORACLE單行函式與多行函式之一Oracle函式