这次记录下Listagg函数的使用方法,这个函数在oracle和达梦中都存在,能够解决在一个分组中将某个字段拼接成字符串的问题。
首先看一下oracle官方文档中这个函数的定义:
具体可以去查看官方文档:https://docs.oracle.com/cd/E11882_01/server.112/e41084/functions089.htm#SQLRF30030
这里给出一个样例:
前提是有一个地区表,表中province_name和city_name,比如province_name是辽宁省,city_name就会有沈阳、大连、鞍山等等,是一对多的关系。
要想获得辽宁省下所有城市名称并且用逗号分隔,就可以这样做。
select province_name, Listagg(city_name, ‘,’) WITHIN GROUP ( ORDER BY 1) AS city_name_str
from table_area
group by province_name;
注意:Order by 1表示不排序,如果要排序要求排序列要没有重复值。具体可以看官方文档的描述。
The order_by_clause determines the order in which the concatenated values are returned. The function is deterministic only if the ORDER BY column list achieved unique ordering.
声明:本站所有资源均由网友分享,如有侵权内容,请在文章下方留言,本站会立即处理。