Oracle 系列数据库使用 listagg去重,删除重复数据的几种方法
在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
是你需要去重后聚合的字段名。这些代码块都能实现去重的目的,但是具体使用哪种方法取决于你的具体需求和数据表的结构。
评论已关闭