学堂 学堂 学堂公众号手机端

在Oracle中,可以使用不同的方法来实现在使用LISTAGG函数时去重重复的值

lewis 2年前 (2023-11-18) 阅读数 7 #技术

在Oracle中,可以使用不同的方法来实现在使用LISTAGG函数时去重重复的值。以下是一些常用的方法:

  1. 使用子查询和ROW_NUMBER()函数:
SELECTLISTAGG(column_name,',')WITHINGROUP(ORDERBYcolumn_name)ASresult FROM( SELECTcolumn_name,ROW_NUMBER()OVER(PARTITIONBYcolumn_nameORDERBYcolumn_name)rn FROMtable_name ) WHERErn=1;
  • 使用GROUPBY子句:
  • SELECTLISTAGG(DISTINCTcolumn_name,',')WITHINGROUP(ORDERBYcolumn_name)ASresult FROMtable_name;
  • 使用CONNECTBY子句:
  • SELECTLISTAGG(column_name,',')WITHINGROUP(ORDERBYcolumn_name)ASresult FROM( SELECTcolumn_name,ROW_NUMBER()OVER(PARTITIONBYcolumn_nameORDERBYcolumn_name)rn FROMtable_name ) STARTWITHrn=1 CONNECTBYPRIORcolumn_name=column_nameANDPRIORrn=rn-1;

    这些方法可以根据具体需求选择合适的方式来去重重复的值。


    版权声明

    本文仅代表作者观点,不代表博信信息网立场。

    热门