这个是数据库查到的字段,可是把这段sql查询语句放到java程序里面就查询satisfactionz
字段的值总是为0,关键完全一样的查询语句啊,在线求解啊
下面是java代码:
@Override
@SuppressWarnings("unchecked")
public Map queryConsultTotalList(ConsultParamVo vo,
PageRequest pageRequest) {
String proCountSql = "select doctorid , isproblem,count(1) rn from jkmh_webcms.tcm_consult ";
String mydSqlString ="select doctorid ,nvl(sum(gradescore)/sum(isgrade),0) satis from jkmh_webcms.tcm_consult group by doctorid ";
String filterSql = "";
if (StringUtils.isNoneBlank(vo.getStartDate())) {
proCountSql += " and time >= to_date('" + vo.getStartDate()
+ " 00:00:00','yyyy-MM-dd HH24:mi:ss')";
}
if (StringUtils.isNotBlank(vo.getEndDate())) {
proCountSql += " and time <= to_date('" + vo.getEndDate()
+ " 23:59:59','yyyy-MM-dd HH24:mi:ss')";
}
if (StringUtils.isNotBlank(vo.getOrgName())) {
filterSql += " and t.org_name like '%" + vo.getOrgName() + "%'";
}
if (StringUtils.isNotBlank(vo.getName())) {
filterSql += " and t.name like '%" + vo.getName() + "%'";
}
proCountSql += " group by doctorid, isproblem";
String totalSql = "select t.id,t.org_name, t.dept_name, t.emp_no, t.name, t.sex, nvl(sum(t.consult), 0) consult, nvl(sum(t.reply), 0) reply,nvl(round(sum(t.satis)),0) satisfaction "
+ " from (select d.id, d.org_name, d.dept_name, d.emp_no, d.name, (case when d.sex = '1' then '男' else '女' end) sex, c1.rn consult, c2.rn reply , c3.satis satis"
+ " from jkmh_webcms.TB_DOCTOR_USERS d"
+ " left join ("
+ proCountSql
+ ") c1 on d.id = c1.doctorid and c1.isproblem = '0'"
+ " left join ("
+ proCountSql
+ ") c2 on d.id = c2.doctorid and c2.isproblem = '2'"
+ "left join("
+mydSqlString
+ ") c3 on d.id = c3.doctorid) t where 1 = 1";
totalSql += filterSql;
totalSql += " group by t.id, t.org_name, t.dept_name, t.emp_no, t.name, t.sex";
String countSql = "select count(1) from (" + totalSql + ")";
int num = (pageRequest.getPageNo() - 1) * pageRequest.getPageSize();
List list = dao.createSQLQuery(totalSql, null, null, null)
.setFirstResult(num).setMaxResults(pageRequest.getPageSize())
.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP).list();
int count = Integer.valueOf(dao
.createSQLQuery(countSql, null, null, null).list().get(0)
.toString());
Map<String, Object> map = new HashMap<String, Object>();
map.put("rows", list);
map.put("total", count);
return map;
}