看你的SQL里面一共是两个条件吧,分别是内查询
where substr(state_tm_m,0,6) between 201311 and 201403
和
where substr(state_tm_m,0,6) between 201310 and 201402
每个条件里面有两个变量,这样的话,应该是从dao里面传入4个变量吧,直接把这四个变量替换一下即可,如:
select astate_tm_m,
amt_number,
amo_number,
asp_name,
acorp_id,
asvc_id,
(amo_number + amt_number - bmo_number - bmt_number) as flow_change,
(amo_number + amt_number - bmo_number - bmt_number) /
(bmo_number + bmt_number) 100 || '%' as flow_change_rate
from (select substr(state_tm_m, 0, 6) as state_tm_m,
sum(mt_number) as mt_number,
sum(mo_number) as mo_number,
sp_name,
corp_id,
svc_id
from gsg_stat_ecsi_day_tab
where substr(state_tm_m, 0, 6) between #{start1} and #{end1}
group by substr(state_tm_m, 0, 6), sp_name, corp_id, svc_id) a,
(select substr(state_tm_m, 0, 6) as state_tm_m,
sum(mt_number) as mt_number,
sum(mo_number) as mo_number,
sp_name,
corp_id,
svc_id
from gsg_stat_ecsi_day_tab
where substr(state_tm_m, 0, 6) between #{start2} and #{end2}
group by substr(state_tm_m, 0, 6), sp_name, corp_id, svc_id) b
where asvc_id = bsvc_id
and acorp_id = bcorp_id
and astate_tm_m - 1 = bstate_tm_m
order by flow_change_rate;
其中:#{start1} #{end1} #{start2} #{end2}
分别为你从services传进来的参数,根据你的参数类型而定
如果是对象的话,可以直接引用其属性,如:
#{objstart1} #{objend1} #{objstart2} #{objend2}
你先试一下吧,有问题再回复
SQL2000理论上只能转ACCESS2000
ACCESS转MS SQL数据库的几点经验
1ACCESS的数据库中的自动编号类型在转化时,sql server并没有将它设为自动编号型,我们需在SQL创建语句中加上identity,表示自动编号!
2转化时,跟日期有关的字段,SQL SERVER默认为smalldatetime型,我们最好将它变为datetime型,因为datetime型的范围比smalldatetime型大。我遇见这种情况,用smalldatetime型时,转化失败,而用datetime型时,转化成功。
3对此两种数据库进行 *** 作的sql语句不全相同,例如:在对ACCESS数据库进行删除纪录时用:delete from user where id=10,而对SQL SERVER数据库进行删除是用:delete user where id=10
4日期函数不相同,在对ACCESS数据库处理中,可用date()、time()等函数,但对SQL SERVER数据库处理中,只能用datediff,dateadd等函数,而不能用date()、time()等函数。
5在对ACCESS数据库处理中,sql语句中直接可以用一些VB的函数,像cstr()函数,而对SQL SERVER数据库处理中,却不能用。 你照着来就是
以上就是关于数据库sql查询语句转换成ibatis中xml里的语句,帮转换一下!全部的内容,包括:数据库sql查询语句转换成ibatis中xml里的语句,帮转换一下!、MSSQL数据库转换成ACCESS数据库、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)