oracle中wm_concat函数将同一列的多行字段值拼接成一行

1.wm_concat函数:wm_concat(字段名)
在查询语句中,将指定字段名的返回结果的所有列的值都用‘,’连接起来拼接成一列。

用下图数据作为基础数据。在这些数据基础上运用wm_concat函数。

oracle中wm_concat函数将同一列的多行字段值拼接成一行

oracle中wm_concat函数将同一列的多行字段值拼接成一行

一般情况下,wm_concat函数配合group by 子句使用。
以下图为基础数据,应用wm_concat配合group by 子句使用。
oracle中wm_concat函数将同一列的多行字段值拼接成一行

oracle中wm_concat函数将同一列的多行字段值拼接成一行

再以下图 为基础数据使用group by 子句查询数据。
oracle中wm_concat函数将同一列的多行字段值拼接成一行

此时返回结果中,按照klg_id分组,每组klg_id返回一条数据,而每组item_id返回多条数据,
oracle处理这种查询的方式是抛出异常:ORA-00979:not a GROUP BY expression,不让你这么查。
所以这时候wm_concat就派上用场了。将item_id的多条数据用wm_concat拼成一条数据。
oracle中wm_concat函数将同一列的多行字段值拼接成一行


oracle中wm_concat函数将同一列的多行字段值拼接成一行

还有要注意当表中数据量很大时,不要直接用wm_concat,拼接某字段的所有值。这样若该字段值拼接起来数据量很大,会因为超长而报错。
oracle中wm_concat函数将同一列的多行字段值拼接成一行