新的起點(diǎn) 新的開始

          快樂生活 !

          列轉(zhuǎn)行 聚合的簡單實(shí)現(xiàn) ORACLE WM_CONCAT LISTAGG 函數(shù)

          項(xiàng)目中有個(gè)需求,將關(guān)聯(lián)出來的數(shù)據(jù)以特定的字段將其他某一自動聚合。例子如下:

           

          1    B1
          1    B2
          1    B3
          2    B4
          2    B5
          3    B6

          to

           


          1    B1,B2,B3
          2    B4,B5
          3    B6

           

            拿到手就想到用存儲過程,其實(shí)還有更簡單的方式。那就是oracle 提供的字符串聚合函數(shù)。

           

          WM_CONCAT Built-in Function (Not Supported)

          If you are not running 11g Release 2, but are running a version of the database where the WM_CONCAT function is present, then it is a zero effort solution as it performs the aggregation for you. It is actually an example of a user defined aggregate function described below, but Oracle have done all the work for you.

           

          LISTAGG Analystic Function in 11g Release 2

          The LISTAGG analytic function was introduced in Oracle 11g Release 2, making it very easy to aggregate strings. The nice thing about this function is it also allows us to order the elements in the concatenated list. If you are using 11g Release 2 you should use this function for string aggregation.

           

          Example 如下:


          CREATE TABLE  "TESTAGG"
            (
              "A" VARCHAR2(20 BYTE),
              "B" VARCHAR2(20 BYTE)
            )


          INSERT INTO "TESTAGG" (A, B) VALUES ('1', 'B1')
          INSERT INTO "TESTAGG" (A, B) VALUES ('1', 'B2')
          INSERT INTO "TESTAGG" (A, B) VALUES ('1', 'B3')
          INSERT INTO "TESTAGG" (A, B) VALUES ('2', 'B4')
          INSERT INTO "TESTAGG" (A, B) VALUES ('2', 'B5')
          INSERT INTO "TESTAGG" (A, B) VALUES ('3', 'B6')

          select * from testAgg

          1    B1
          1    B2
          1    B3
          2    B4
          2    B5
          3    B6

          select  a  ,wm_concat (b) as policinams from testagg  group by a order by a

          select  a ,LISTAGG(b,',' ) within group(order by a) as b from testagg group by

          1    B1,B2,B3
          2    B4,B5
          3    B6

          posted on 2012-09-26 22:40 advincenting 閱讀(2510) 評論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫相關(guān)

          公告

          Locations of visitors to this pageBlogJava
        1. 首頁
        2. 新隨筆
        3. 聯(lián)系
        4. 聚合
        5. 管理
        6. <2012年9月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          統(tǒng)計(jì)

          常用鏈接

          留言簿(13)

          隨筆分類(71)

          隨筆檔案(179)

          文章檔案(13)

          新聞分類

          IT人的英語學(xué)習(xí)網(wǎng)站

          JAVA站點(diǎn)

          優(yōu)秀個(gè)人博客鏈接

          官網(wǎng)學(xué)習(xí)站點(diǎn)

          生活工作站點(diǎn)

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 晋州市| 淮阳县| 镇赉县| 莎车县| 海林市| 雅安市| 琼中| 朔州市| 成武县| 庄浪县| 长乐市| 四会市| 岳阳市| 龙门县| 辉县市| 望奎县| 临西县| 鸡西市| 花莲县| 临洮县| 都匀市| 大田县| 镶黄旗| 阳泉市| 太原市| 揭东县| 阳原县| 琼结县| 郸城县| 壶关县| 樟树市| 寻甸| 隆安县| 昌都县| 龙江县| 洛宁县| 雅安市| 彝良县| 临洮县| 阿勒泰市| 开封县|