ORACLE列值合併,oracle列

來源:互聯網
上載者:User

ORACLE列值合併,oracle列

合併列值最通用的方法就是寫一個自定義函數去實現,這裏介紹的是其他方法。

在SQL Server中合併列值可以使用For Xml Path,在Oracle中則可以使用wm_concat 或 ListAgg。

準備數據:

CREATE TABLE MyTest(xType NUMBER,City nvarchar2(200));/INSERT INTO MyTest(xType,City)SELECT 1,N'北京' FROM dual UNION ALLSELECT 1,N'上海' FROM dual UNION ALLSELECT 1,N'廣州' FROM dual UNION ALLSELECT 2,N'武漢' FROM dual UNION ALLSELECT 2,N'杭州' FROM dual UNION ALLSELECT 2,N'廈門' FROM dualCOMMIT;/
使用wm_Concat:

SELECT xType,wmsys.wm_concat(to_char(City)) AS xCityFROM MyTestGROUP BY xType

使用ListAgg:

SELECT xType,       ListAgg(to_char(City),',') WITHIN GROUP(ORDER BY xType) AS xCityFROM MyTestGROUP BY xType
結果:

XTYPE          XCITY
----------   --------------------------------------
         1        北京,廣州,上海
         2         杭州,武漢,廈門

備註:

0、上面在City列前都加了To_Char()函數,是為了防止出現亂碼的情況;

1、wm_concat 在ORACEL的官方文檔中沒有,不能保證各版本的相容性;

2、ListAgg是11g版本才出現的新的聚集函數。



oracle語句中怎把一列的值合并為一個值,用逗號隔開?

所有版本的oracle都可以使用select wm_concat(name) as name from user;
但如果是oracle11g,使用select listagg(name, ',') within group( order by name) as name from user;
效率更高,官方也更推薦這種寫法。
 
oracle 將兩列合并

單純的select a||b肯定是錯的,你得有個相同的欄位才能進行合并啊

所以你得把兩個表做個子查詢加上一個行號,然後用兩個行號做關聯才行
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.