Oracle 系列数据库使用 listagg去重,删除重复数据的几种方法
warning:
这篇文章距离上次修改已过433天,其中的内容可能已经有所变动。
在Oracle数据库中,可以使用listagg函数结合distinct关键字来去重,但listagg本身不直接支持去重。为了实现去重,可以使用子查询或者WITH子句来先进行去重,然后再使用listagg聚合。
以下是几种实现去重的方法:
- 使用子查询去重后使用
listagg聚合:
select listagg(column, ',') within group (order by column) as aggregated_column
from (
select distinct column from your_table
) t;- 使用WITH子句去重后使用
listagg聚合:
with distinct_values as (
select distinct column from your_table
)
select listagg(column, ',') within group (order by column) as aggregated_column
from distinct_values;- 使用
group by和grouping sets结合listagg函数去重:
select listagg(column, ',') within group (order by column) as aggregated_column
from your_table
group by column
grouping sets ((column));以上代码中的your_table是你的数据表名,column是你需要去重后聚合的字段名。这些代码块都能实现去重的目的,但是具体使用哪种方法取决于你的具体需求和数据表的结构。
评论已关闭