新的起點 新的開始

          快樂生活 !

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

          項目中有個需求,將關(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

           

            拿到手就想到用存儲過程,其實還有更簡單的方式。那就是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 閱讀(2500) 評論(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)計

          常用鏈接

          留言簿(13)

          隨筆分類(71)

          隨筆檔案(179)

          文章檔案(13)

          新聞分類

          IT人的英語學習網(wǎng)站

          JAVA站點

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

          官網(wǎng)學習站點

          生活工作站點

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 玉山县| 巴林右旗| 湟中县| 绍兴市| 陆川县| 宣城市| 上犹县| 威信县| 温泉县| 建湖县| 闵行区| 新源县| 安龙县| 高要市| 万山特区| 加查县| 永春县| 拉萨市| 奎屯市| 濮阳县| 肃宁县| 安溪县| 新泰市| 内黄县| 永宁县| 杂多县| 东乌| 永靖县| 丽江市| 永寿县| 施甸县| 新和县| 合山市| 安顺市| 凤山县| 勃利县| 乡宁县| 醴陵市| 景泰县| 龙山县| 临夏市|