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 ALL
SELECT 1,N'上海' FROM dual UNION ALL
SELECT 1,N'广州' FROM dual UNION ALL
SELECT 2,N'武汉' FROM dual UNION ALL
SELECT 2,N'杭州' FROM dual UNION ALL
SELECT 2,N'厦门' FROM dual
COMMIT;
/

使用wm_Concat:

SELECT xType,wmsys.wm_concat(to_char(City)) AS xCity
FROM MyTest
GROUP BY xType

使用ListAgg:

SELECT xType,
       ListAgg(to_char(City),',') WITHIN GROUP(ORDER BY xType) AS xCity
FROM MyTest
GROUP BY xType

結果:

XTYPE          XCITY

----------   --------------------------------------

1        北京,广州,上海

2         杭州,武汉,厦门

備註:

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

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

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

ORACLE列值合併,布布扣,bubuko.com

时间: 2024-12-20 12:43:42

ORACLE列值合併的相关文章

ORACLE列值合并

select sfc,repair_index,listagg(method,'/') within group (order by sfc)as method from MES2_BYD_REPAIR_OPERATION where method is not null group by sfc,repair_index

Oracle查询结果列的加减、求和、连接、列值相乘

select prod.amount,prod.plansum,(prod.plansum-prod.amount) as borrow,d.enum_value from ----结果集相减(select t.Quo_Prod_List_Price * t.QUO_PROD_VOLUME as amount ,----列值相乘       t.quo_prod_plan_cost * t.quo_prod_volume as plansum , t.broad_class as broad_c

Hbase 098.4中使用新API通过Get列表获取多行的列值

在Hbase0.98.4中通过Get列表的方式获取Hbase中多行的列值,本来想使用KeyValue类来处理的,结果发现该类的getRow()和getValue()的两个方法已经废弃了,最终使用新API中的Cell接口来实现,如下: Hbase中测试表中数据如下: hbase(main):005:0> scan 'testtable' ROW                      COLUMN+CELL                                             

[ASP.NET] 如何利用javascript分割檔案上傳至後端合併

最近研究了一下如何利用javascript進行檔案分割上傳並且透過後端.特地記錄一下相關的用法 先寫限制跟本篇的一些陷阱 1.就是瀏覽器的支援了 因為本篇有用到blob跟webworker 在ie中需要最少10版以上才有支援以下的方法喔! 2.因為我這是簡單的測試,所以我是將檔案存放在Session當中,實際要使用的話.應該會是將檔案分割存放在檔案系統中 廢話就不多說,我們先來看js端的程式碼 self.onmessage = function (e) { ////web worker star

Oracle列自增实现(2)-Identity Columns in Oracle Database 12c Release 1 (12.1)

Oracle列自增-Identity Columns in Oracle Database 12c Release 1 (12.1) 在ORACLE 12C以前的版本中,如果要实现列自增长,需要通过序列+触发器实现,到了12C ORACLE 引进了Identity Columns新特性,从而实现了列自增长功能. 一.Identity Columns使用语法 GENERATED [ ALWAYS | BY DEFAULT [ ON NULL ] ] AS IDENTITY [ ( identity

delphi CXGRID用法 (取行、列值;定位选中某行等等)

CXGRID用法 (取行.列值:定位选中某行等等) Delphi Cxgrid获取选中行列,排序规则,当前正在编辑的单元格内的值 cxGrid1DBTableView1.Controller.FocusedRowIndex 当前行号 cxGrid1DBTableView1.Controller.FocusedRow 当前行 cxGrid1DBTableView1.Controller.FocusedColumn 当前列 cxGrid1DBTableView1.Controller.Focused

veridata实验举例(5)修改主键上的列值,update操作会被拆分成两条语句

veridata实验举例(5)修改主键上的列值,update操作会被拆分成两条语句 续接"veridata实验举例(4)验证veridata查找出updata.delete操作导致的不同步现象",地址:点击打开链接 环境: Item Source System Target System Platform Red Hat Enterprise Linux Server release 5.4 Red Hat Enterprise Linux Server release 5.4 Hos

oracle列合并

在许多场合,我们会需要用到oracle列合并,oracle提供了一些方法用于把某列的多行数据合并成一行. 一.10G以前使用WMSYS.WM_CONCAT wmsys.wm_concat将字段的值用","来隔开. select id,wm_concat(name) from tab_name group by id; 二.sys_connect_by_path sys_connect_by_path(字段名, 2个字段之间的连接符号),这里的连接符号不要使用逗号,oracle会报错,如

easyui 在编辑状态下,动态修改其他列值。

1 首先是自定义了一个方法uodateColumn更新列值 2 3 /** 4 *自定义的修改列值方法 5 */ 6 $.extend($.fn.datagrid.methods, { 7 updateColumn: function(datagrid,data) { 8 datagrid.each(function(){ 9 //获取缓存中的配置数据 10 var gridObj=$.data(this,"datagrid"); 11 var opts=gridObj.options