oracle數據庫中l(wèi)istagg函數使用詳解
listagg是oracle11.2增加的特性。
功能類似wmsys.wm_concat函數,即將數據分組后,把指定列的數據通過指定符號合并。
--listagg()函數,列轉行。 在每個分組內,LISTAGG根據order by子句對列值進行排序,將排序后的結果拼接起來。
--基本語法;listagg(待處理列,連接符號) within group(order by 用于拼接組內排序字段)
select a.* from test_userinfo a;
--分組函數:
select a.user_sex,listagg(a.user_school,',') within group(order by a.user_age) from test_userinfo a group by a.user_sex;
--分析函數:根據年齡分區(qū),在分區(qū)內部拼接學校,然后拼接時按照性別排序
select a.user_name,a.user_age,a.user_school,listagg(a.user_school,',') within group(order by a.user_sex) over (partition by a.user_age) from test_userinfo a;



附:LISTAGG () 和STRING_AGG () 函數的區(qū)別與簡單使用
1:區(qū)別
LISTAGG 和 STRING_AGG 都是用于在 SQL 查詢中將多個值合并為單個字符串的函數,但它們屬于不同的數據庫系統(tǒng)。
LISTAGG是 Oracle 數據庫中的聚合函數,用于將多行的值合并為一個字符串,并且可以指定分隔符。STRING_AGG是 SQL Server 中的聚合函數,也用于將多行的值合并為一個字符串,并且可以指定分隔符。
2:語法結構
2.1 LISTAGG 函數的語法結構如下:
LISTAGG(expression, delimiter) WITHIN GROUP (ORDER BY order_expression) [OVER (analytic_clause)]
- expression:要合并的表達式,通常是一個列或計算值。
- delimiter:用于分隔合并的值的分隔符。
- ORDER BY order_expression:可選部分,用于指定合并的順序。如果不提供
ORDER BY子句,合并的順序將不受控制。 - analytic_clause:可選部分,通常用于窗口函數。在常規(guī)用法中,這部分通常不會出現。
2.2 STRING_AGG 函數的語法結構如下:
STRING_AGG (expression, separator)
- expression:要合并的表達式,通常是一個列或計算值。
- separator:用于分隔合并的值的分隔符。
總結
到此這篇關于oracle數據庫中l(wèi)istagg函數使用的文章就介紹到這了,更多相關oracle listagg函數內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
[Oracle] Data Guard CPU/PSU補丁安裝詳細教程
以下是對Data Guard CPU/PSU補丁安裝的方法進行了詳細的分析介紹,需要的朋友可以參考下2013-07-07
Oracle內存分配不足的過程解析(業(yè)務干掛數據庫)
本文介紹了Oracle數據庫內存分配不足的問題,原因主要是業(yè)務劇增導致的內存不足,通過分析AAS負載、等待事件、transactions和阻塞情況,發(fā)現PGA內存出現了嚴重抖動,感興趣的朋友一起看看吧2025-02-02
oracle查看執(zhí)行最慢與查詢次數最多的sql語句
這篇文章主要給大家介紹了oracle查看執(zhí)行最慢與查詢次數最多的sql語句,文中給出完整的示例代碼,相信對大家的學習或者工作具有一定的參考價值,有需要的朋友們下面來一起看看吧。2017-01-01
Oracle RMAN還原時set newname文件名有空格報錯的解決方法
數據庫備份還原是我們日常開發(fā)少不了的一個功能,但如果一不注意估計就會有問題,下面這篇文章主要給大家介紹了關于Oracle RMAN還原時set newname文件名有空格報錯的解決方法,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。2017-11-11

