慢慢成长的我 2016-06-08 08:51 采纳率: 0%
浏览 1906
已结题

为什么查询的字段值总是为0,科室数据库里面字段是有值的???求解

图片说明
这个是数据库查到的字段,可是把这段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;
}

  • 写回答

1条回答 默认 最新

  • _1_1_7_ 2016-06-08 09:59
    关注

    查询条件里面带有汉字(姓名字段),可能是因为代码的字符集和数据库的字符集不一致,
    导致汉字传到数据库那边成乱码了,
    查询条件不成立,故而查不到结果,统计就为0了

    评论

报告相同问题?

悬赏问题

  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试