SQL多行值合并一行字符串逗號分隔
問題:
假設(shè)我們有一張學(xué)生表:姓名,科目,成績。
在查詢的SQL使用中我們可能會有這樣一種需求:展示學(xué)生姓名和科目成績,科目成績用逗號分隔。
實際上也就是將這個學(xué)生的所有成績記錄轉(zhuǎn)換為一條記錄展示出來。
就可以使用這個SQL:
SELECT 姓名, LISTAGG(成績, ',') WITHIN GROUP (ORDER BY 科目) AS 科目成績 FROM 學(xué)生表 GROUP BY 姓名;
這個查詢首先選擇了 “姓名” 字段,然后使用 LISTAGG函數(shù)將相同學(xué)生的 “成績” 字段值以逗號分隔的形式合并成一個字符串,并按照 “科目” 字段的順序進行排序。
LISTAGG
LISTAGG 是一個用于聚合操作的字符串函數(shù),它在Oracle數(shù)據(jù)庫系統(tǒng)中可用,當(dāng)然達夢也可以。該函數(shù)用于將多個行中的值連接為一個字符串,并且可以指定分隔符來分隔每個值。
通常語法如下:
LISTAGG(expression, delimiter) WITHIN GROUP (ORDER BY column)
expression是要連接的列或表達式。delimiter是用于分隔每個值的字符串。WITHIN GROUP子句用于指定對結(jié)果進行排序的列。可以選擇省略此子句。ORDER BY子句用于指定排序的順序。
LISTAGG 函數(shù)將具有相同分組鍵的行的值連接起來,并使用指定的分隔符將它們分隔開。這非常適用于將多個值合并為一個字符串,常用于生成逗號分隔的列表。
實例:

如圖我們看到這個查詢結(jié)果中parti_name字段有多個數(shù)據(jù),現(xiàn)在我們把它轉(zhuǎn)換為一條記錄查詢出來且用逗號隔開。
SELECT uuid as uuid, LISTAGG(parti_name, ',') WITHIN GROUP ( ORDER BY DISPLAYORDER) AS parti_name FROM PARTICIPA GROUP BY uuid
結(jié)果:

注意:
LISTAGG聚合函數(shù)是 Oracle 數(shù)據(jù)庫中的特定函數(shù),用于將多個行的值進行連接。因此,
LISTAGG函數(shù)可以在 Oracle 數(shù)據(jù)庫中使用,并且從 Oracle 11g 版本開始可用。
在其他數(shù)據(jù)庫系統(tǒng)中,可能會有類似的函數(shù)用于字符串聚合操作,但具體的函數(shù)名稱、語法和用法可能會有所不同。如下是一些其他數(shù)據(jù)庫系統(tǒng)中類似 LISTAGG 的函數(shù),有類似需求可百度求解:
- MySQL:
GROUP_CONCAT - SQL Server:
STRING_AGG - PostgreSQL:
STRING_AGG - IBM DB2:
LISTAGG
到此這篇關(guān)于SQL多行值合并一行字符串逗號分隔的文章就介紹到這了,更多相關(guān)SQL多行值合并內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mssqlserver恢復(fù)ldf文件數(shù)據(jù)的方法
本文介紹mssqlserver怎么恢復(fù)ldf文件數(shù)據(jù)庫,簡單的來說,MDF文件是SQL server用來存放數(shù)據(jù)的數(shù)據(jù)庫文件;LDF文件SQL server是日志文件,存放了對數(shù)據(jù)庫進行的所有操作信息2013-11-11
安裝SQL2008時提示刪除SQL2005Express工具的解決方法
在安裝SQL2008的時候,提示要刪除SQL2005EXPRESS工具,在網(wǎng)上找了很多資料,終于找到一個比較方便的方法了,希望能幫助大家。2010-07-07
安裝sql server2008后再安裝sql 2005找不到本地服務(wù)器的解決方法
這篇文章主要介紹了安裝sql server2008后再安裝sql 2005找不到本地服務(wù)器的解決方法,需要的朋友可以參考下2015-01-01
SQL2000個人版 應(yīng)用程序正常初始化失敗0乘以C0000135失敗
應(yīng)用程序正常初始化(0*c0000135)失敗。是什么意思?2011-01-01
SQL Server 不存在或訪問被拒絕(轉(zhuǎn))
在使用 SQL Server 的過程中,用戶遇到最多的問題莫過于連接失敗了。一般而言,有兩種連接SQL Server 的方式,一是利用 SQL Server 自帶的客戶端工具2009-06-06
SqlServer 基礎(chǔ)知識 數(shù)據(jù)檢索、查詢排序語句
SqlServer 基礎(chǔ)知識 數(shù)據(jù)檢索、查詢排序語句,需要的朋友可以參考下。2011-10-10

