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

          sql 分組排序

          Posted on 2007-05-28 15:31 change 閱讀(428) 評論(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:表示目的地

          在數據庫里面這樣的查詢是可以的,但是用這樣的語句在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();

          是不行的,會出現異常,報錯。

          改為:

          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 所返回的是對象數組,它把取得的每一列都作為一個對象,然后返回一個對象數組的疊代器,然后我們就可以取出里面的每一列(對象)轉換成相應的數據類型,(這里 strtable 是table所對應的實體的名字)

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

          主站蜘蛛池模板: 临洮县| 巴东县| 伊川县| 伊宁市| 绩溪县| 尖扎县| 宁武县| 临夏县| 岳普湖县| 彝良县| 肇东市| 扎赉特旗| 高淳县| 桦甸市| 辽宁省| 治多县| 仙桃市| 霍林郭勒市| 潮安县| 四川省| 曲阳县| 宾阳县| 西城区| 博罗县| 舒城县| 炉霍县| 沛县| 十堰市| 左云县| 临澧县| 玛多县| 房山区| 江都市| 安阳县| 长垣县| 奉化市| 亳州市| 长泰县| 潮州市| 社旗县| 大悟县|