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所對應的實體的名字)
就可以了。應該是在里面不支持對 統計添加的列 的別名命名吧。呵呵:)