假设两张表,emp员工表(id,name,dept_id),dept部门表(id,name),现在要得到报表是员工的信息,但是要求按照部门id分类,此时的报表上应显示部门的name,而不是id(此时设计到两张表的关联),请问这个报表如何设计,或是sql语句写成什么样子。请了解的兄弟们帮忙,谢谢

解决方案 »

  1.   

    先在数据空中建立一个翻译函数tr_idtoname,作用是将部门id翻译为name.
    select tr_idtoname(b.id),a.name from a,b where a.dept_id=b.id group by b.id,a.name.
      

  2.   

    楼主,这样子吧,给ireport做一个分组(group),
    SQL语句如:
    select d.name deptName,e.name empName from emp e
    inner join dept d on d.id = e.dept_id
    order by d.name
    这样ireport中就有两个field:$F{deptName}和$F{empName},按照$F{deptName}进行分组就可以了。
    如:
    SQL查询结果有6条记录:
    一分公司    张三
    一分公司    李四
    一分公司    王五
    二分公司    张六
    二分公司    李七
    二分公司    王八则ireport打印出来的结果如:
    一分公司
        张三
        李四
        王五
    二分公司
        张六
        李七
        王八
      

  3.   

    多谢啊,还想问下,如果报表中现在有一列count统计,在报表下方计算总数sum,请问在ireport中如何实现?
      

  4.   

    求合计是吧?把count列的所有值统计在最下一行中?
    步骤:
    1、定义一个变量$V{sum},设置其计算方式为“sum”,表达式为$F{count},计算时间为report,其他属性自己看着办;
    2、可将合计行内容置于summary中,并设置其表达式为$V{sum}
    这样基本就可以了,别忘了设置这些field的类型。