新的起點(diǎn) 新的開(kāi)始

          快樂(lè)生活 !

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

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

           

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

          to

           


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

           

            拿到手就想到用存儲(chǔ)過(guò)程,其實(shí)還有更簡(jiǎn)單的方式。那就是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 閱讀(2505) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): 數(shù)據(jù)庫(kù)相關(guān)

          公告

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

          統(tǒng)計(jì)

          常用鏈接

          留言簿(13)

          隨筆分類(lèi)(71)

          隨筆檔案(179)

          文章檔案(13)

          新聞分類(lèi)

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

          JAVA站點(diǎn)

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

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

          生活工作站點(diǎn)

          最新隨筆

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 黔西县| 浦县| 嘉峪关市| 贵溪市| 鸡泽县| 蒲城县| 诸城市| 勐海县| 苏尼特左旗| 哈尔滨市| 平昌县| 邳州市| 肇源县| 柳河县| 兴安盟| 扶沟县| 南通市| 平谷区| 定日县| 旬阳县| 丹棱县| 禹州市| 肥东县| 高雄市| 陆良县| 六盘水市| 锦屏县| 和龙市| 汉沽区| 云梦县| 吴桥县| 台山市| 武安市| 济宁市| 石嘴山市| 池州市| 柘城县| 越西县| 旬阳县| 鄯善县| 手游|