posts - 29, comments - 0, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          sql 分組排序

          Posted on 2007-05-28 15:31 change 閱讀(429) 評論(0)  編輯  收藏

          CREATE TABLE V_GIS_MONTH
          (
            ID         VARCHAR2(255 BYTE)                 NOT NULL,
            VISITTIME  DATE                               DEFAULT NULL,
            GISNAME    VARCHAR2(255 BYTE),
            GISLEVEL   VARCHAR2(255 BYTE),
            PARENT     VARCHAR2(255 BYTE),
            VNUMBER    NUMBER(19),
            IPFROM     VARCHAR2(255 BYTE),
            IPLEVEL    VARCHAR2(2 BYTE),
            GISPATH    VARCHAR2(1024 BYTE)
          )
          TABLESPACE USERS

          PCTUSED    0
          PCTFREE    10
          INITRANS   1
          MAXTRANS   255
          STORAGE    (
                      INITIAL          64K
                      MINEXTENTS       1
                      MAXEXTENTS       2147483645
                      PCTINCREASE      0
                      BUFFER_POOL      DEFAULT
                     )
          LOGGING
          NOCACHE
          NOPARALLEL;


          ALTER TABLE V_GIS_MONTH ADD (
            PRIMARY KEY (ID)
              USING INDEX
              TABLESPACE USERS
              PCTFREE    10
              INITRANS   2
              MAXTRANS   255
              STORAGE    (
                          INITIAL          64K
                          MINEXTENTS       1
                          MAXEXTENTS       2147483645
                          PCTINCREASE      0
                         ));


          select gisdays.ipfrom,gisdays.gisname,sum(gisdays.vnumber)AS count from V_Gis_Month gisdays where gisdays.GISPATH = '/sotrip_dest/destination_home/china/zhejiang/' and gisdays.iplevel='3' group by gisdays.ipfrom,gisdays.gisname ORDER BY count desc;

          gis:表示目的地

          在數(shù)據(jù)庫里面這樣的查詢是可以的,但是用這樣的語句在hibernate的DAO層

          這樣做:

          String queryString = "select gisdays.ipfrom,sum(gisdays.vnumber) AS count  from "+strtable+" gisdays where gisdays.iplevel='"+striplevel+"' "+strquery+" and to_char(gisdays.visittime,'YYYY-MM-DD')  between '"+strfrom+"' and '"+strto+"' group by gisdays.ipfrom ORDER BY count desc";           
            

          Iterator iterator = this.getHibernateTemplate().find(queryString).iterator();

          是不行的,會出現(xiàn)異常,報錯。

          改為:

          String queryString = "select gisdays.ipfrom,sum(gisdays.vnumber)  from "+strtable+" gisdays where gisdays.iplevel='"+striplevel+"' "+strquery+" and to_char(gisdays.visittime,'YYYY-MM-DD')  between '"+strfrom+"' and '"+strto+"' group by gisdays.ipfrom ORDER BY sum(gisdays.vnumber) desc";           

           Iterator iterator = this.getHibernateTemplate().find(queryString).iterator();

          while(iterator.hasNext())
            {
             Object[] pair = (Object[])iterator.next();   
             VGisMonth gismonth = new VGisMonth();
             for(int i=0;i<pair.length;i++)
             {
              System.out.println("pair["+i+"]="+pair[i]);
             }

          }//這里iterator 所返回的是對象數(shù)組,它把取得的每一列都作為一個對象,然后返回一個對象數(shù)組的疊代器,然后我們就可以取出里面的每一列(對象)轉(zhuǎn)換成相應(yīng)的數(shù)據(jù)類型,(這里 strtable 是table所對應(yīng)的實體的名字)

          就可以了。應(yīng)該是在里面不支持對  統(tǒng)計添加的列 的別名命名吧。呵呵:)

          主站蜘蛛池模板: 深圳市| 枣强县| 黑龙江省| 米泉市| 新泰市| 伊宁县| 荣成市| 馆陶县| 汕头市| 武安市| 缙云县| 秦安县| 巴林左旗| 江津市| 格尔木市| 启东市| 郧西县| 黔江区| 达尔| 宝丰县| 城口县| 大新县| 安康市| 湘潭市| 海宁市| 馆陶县| 个旧市| 瑞金市| 克东县| 双柏县| 汤原县| 卓资县| 会东县| 大宁县| 华蓥市| 玛曲县| 武川县| 抚松县| 小金县| 库车县| 霞浦县|