最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Oracle數(shù)據(jù)庫如何將表的某一列所有值用逗號隔開去重后合并成一行

 更新時間:2023年12月29日 09:22:33   作者:Dasher?yi  
在做系統(tǒng)時經(jīng)常會遇到在?個字段中,?逗號或其他符號分隔存儲多個信息,這篇文章主要給大家介紹了關于Oracle數(shù)據(jù)庫如何將表的某一列所有值用逗號隔開去重后合并成一行的相關資料,需要的朋友可以參考下

一、背景

最近在工作中,有個需求是要求在oracle統(tǒng)計查詢的時候,將表的某一列的所有值用逗號隔開,去重后合并成一行。于是研究了一下listaggxmlagg 函數(shù) 用來合并數(shù)據(jù)

以下通過實例說明。

二、方法

1.不去重的兩種方法

listagg函數(shù)

返回結果為varchar2格式的數(shù)據(jù),即拼接后的字符串最大可以保存4000字節(jié)的數(shù)據(jù),所以大于這個數(shù)據(jù)的字符串就會報ORA-01489 字符串連接的結果過長的錯誤。

xmlagg函數(shù)

查詢結果過長,拼接的字符串長度過長大于4000字節(jié),我們可以使用這個函數(shù),函數(shù)返回結果為CLOB類型,大對象數(shù)據(jù)類型最大可以存儲4GB的數(shù)據(jù)長度。

用法1:用某符號拼接列中所有值

SELECT
    LISTAGG(student_name, ',') WITHIN GROUP(ORDER BY student_name) listagg
FROM
    student_info t;

執(zhí)行結果:

listagg
王一,陳二,張三,李四

用法2:按某列 分組,用指定符號拼接組內(nèi)列中所有值

//方法1 LISTAGG
SELECT
    t.student_name,t.student_sex
    LISTAGG(student_name, ',') WITHIN GROUP(ORDER BY student_name) 
    OVER( PARTITION BY student_sex) 
    listagg
FROM
    student_info t;

//方法2 xmlagg

SELECT
    xmlagg(xmlparse(content t.student_name || ',' WELLFORMED) order by t.student_name).getClobval()     
    listagg
FROM
    student_info t;

執(zhí)行結果:

student_namestudent_sexlistagg
王一王一,陳二
陳二王一,陳二
張三張三,李四
李四張三,李四

2.去重的方法

數(shù)據(jù)表

創(chuàng)建日期公司代碼銷售物品
20230718085055111蘋果
20230718085055111香蕉
20230718090000111蘋果
20230718090000112牙刷
20230718090000112牙刷

若不去重則顯示數(shù)據(jù)為

公司代碼        銷售物品
111蘋果,香蕉,蘋果
112牙刷,牙刷

有多種去重方法,這邊建議先去重再聚合

//distinct去重后,再聚合 拼接
    select
        t.company_code ,LISTAGG(t.sale_name, ',') within group (
        order by  t.sale_name) OVER(PARTITION BY t.company_code ) LISTAGG 
    from 
      (
        select
          distinct s.sale_name,
          s.company_code 
        from
          sale_info s
     ) t 

執(zhí)行結果:

company_code      LISTAGG 
111蘋果,香蕉
112牙刷

以上即為本人項目中的處理思路,若有幫助到你,那真的太好了!

總結

到此這篇關于Oracle數(shù)據(jù)庫如何將表的某一列所有值用逗號隔開去重后合并成一行的文章就介紹到這了,更多相關Oracle列值用逗號隔開去重后合并內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Oracle定義聯(lián)合數(shù)組及使用技巧

    Oracle定義聯(lián)合數(shù)組及使用技巧

    聯(lián)合數(shù)組以前被稱為PL/SQL表。在表中不能使用聯(lián)合數(shù)組,只能將它們用作程序設計的結構體。只能在PL/SQL中訪問聯(lián)合數(shù)組
    2012-11-11
  • Oracle中PL/SQL的塊與表達式

    Oracle中PL/SQL的塊與表達式

    這篇文章介紹了Oracle中PL/SQL的塊與表達式,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • Oracle中的高效SQL編寫PARALLEL解析

    Oracle中的高效SQL編寫PARALLEL解析

    這篇文章主要介紹了Oracle中的高效SQL編寫PARALLEL解析,在Oracle中,PARALLEL(并行)方式最大化調用計算機資源來成倍提高數(shù)據(jù)分析效率,這個在Oracle 9i之后的版本可以使用,需要的朋友可以參考下
    2023-07-07
  • oracle怎樣才能徹底卸載干凈

    oracle怎樣才能徹底卸載干凈

    Oracle安裝上之后,通過自帶的卸載工具一般都無法將程序卸載干凈,導致下次的程序安裝出錯,這篇文章主要給大家介紹了關于oracle怎樣才能徹底卸載干凈的相關資料,需要的朋友可以參考下
    2023-11-11
  • Oracle對字段的增刪改方法分享

    Oracle對字段的增刪改方法分享

    這篇文章給大家分享了Oracle對字段的增刪改語句,對大家日常操作Oracle非常實用,有需要的可以參考借鑒。
    2016-08-08
  • Oracle中使用DBMS_XPLAN處理執(zhí)行計劃詳解

    Oracle中使用DBMS_XPLAN處理執(zhí)行計劃詳解

    這篇文章主要介紹了Oracle中使用DBMS_XPLAN處理執(zhí)行計劃詳解,文中包含大量實例,以及set autotrace命令對應實現(xiàn)等內(nèi)容,需要的朋友可以參考下
    2014-07-07
  • maven添加oracle依賴失敗問題的處理方法

    maven添加oracle依賴失敗問題的處理方法

    這篇文章主要介紹了maven添加oracle依賴失敗問題的處理方法,需要的朋友可以參考下
    2018-07-07
  • Oracle設置時區(qū)和系統(tǒng)時間的多種實現(xiàn)方法

    Oracle設置時區(qū)和系統(tǒng)時間的多種實現(xiàn)方法

    在Oracle數(shù)據(jù)庫中,設置時區(qū)和系統(tǒng)時間可以通過多種方法實現(xiàn),本文通過代碼示例給大家介紹了Oracle設置時區(qū)和系統(tǒng)時間的多種實現(xiàn)方法,需要的朋友可以參考下
    2024-02-02
  • expdp與impdp導出導入特定表方式

    expdp與impdp導出導入特定表方式

    文章介紹了在Oracle數(shù)據(jù)庫中導入導出特定表的方法,包括在10g和11g/12c中的操作區(qū)別,以及如何使用DBBAK文件夾作為導出文件的存儲,同時,文章指出了在Windows Server 2012及以上版本中使用PowerShell時可能會遇到的問題,建議在DOS命令行窗口中執(zhí)行相關操作
    2025-01-01
  • ORACLE中查找定位表最后DML操作的時間小結

    ORACLE中查找定位表最后DML操作的時間小結

    在Oracle數(shù)據(jù)庫中,如何查找,定位一張表最后一次的DML操作的時間呢? 方式有三種,不過都有一些局限性,下面簡單的解析、總結一下。感興趣的朋友跟隨小編一起看看吧
    2018-11-11

最新評論

久治县| 张家界市| 曲水县| 远安县| 余庆县| 佛冈县| 陆河县| 许昌县| 碌曲县| 池州市| 松桃| 沙洋县| 泾川县| 昌邑市| 洛扎县| 襄城县| 海阳市| 乡城县| 灵寿县| 镇坪县| 西盟| 华池县| 巴青县| 武汉市| 梁平县| 丹巴县| 改则县| 隆回县| 方城县| 成都市| 晋州市| 杭州市| 牙克石市| 津南区| 抚宁县| 保康县| 三江| 崇州市| 靖州| 屏边| 拜泉县|