【Oracle】使用DISTINCT和LISTAGG对查询结果去重、合并

1. 使用DISTINCT对查询结果去重

语法:SELECT DISTINCT [去重对象列], [列2], [列3].... FROM [表名]

例子:

1.1 原始数据

1.2 对ROLE(角色名)去重

注意点:查询的列必须保证除了被去重的列以外,其他列没有重复的值。

例如原始数据中POSITION列也有重复值,所以此处不查询POSITION列

1.3 对REGION(地区)列去重

2. 使用LISTAGG对查询结果合并

语法:SELECT [列1],

                     [列2],

                     LISTAGG([合并对象列], '[分割符]') WITHIN GROUP(ORDER BY [排序列]) AS [别名]

            FROM [表名]

            GROUP BY [列1],  [列2]

例子:

2.1 原始数据

      同【1.1 原始数据】

2.2 对POSITION(位置)列合并,以【;】间隔

 2.2 对ROLE(角色)列合并,以【,】间隔

 3.使用DISTINCT + LISTAGG对查询结果去重、合并

例子:

3.1 原始数据

      同【1.1 原始数据】

3.2 对ROLE(角色)列去重合并,以【&】间隔,以REGION(地区)排列

 3.3 对ROLE(角色)列去重合并,以【 and 】间隔,以SEX(性别)排列

【全文完】 

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值