我sql不熟,如果仅仅显示付费编号和费用,可以考虑group by命令。但是要都列出来,就比较麻烦。能不能第一次select把付费编号选出来,存储起来(比如数组),然后循环做第二次select?这是最容易想到的办法。

解决方案 »

  1.   

    select distinct acct_i from dianhuafeiyong ;
    然后将结果保存到String id_str[];中。
    然后利用i循环执行
    {
    sum=0;//总费用初始为0
    执行这个查询语句"select * from dianhuafeiyong where acci_id="+id_str[i]+";";
    得到刚才得到的结果,逐个输出,并计算sum;
    out.println("总合是:"+sum+"元");
    }
      

  2.   

    select distinct acct_i from dianhuafeiyong ; 
    然后将结果保存到String id_str[];中。 
    然后利用i循环执行 

    out.println("    付费编号  号码      费用"); 
    sum=0;//总费用初始为0 
    执行这个查询语句"select * from dianhuafeiyong where acci_id="+id_str[i]+";"; 
    得到刚才得到的结果,逐个输出,并计算sum; 
    out.println("总合是:"+sum+"元"); 
    }
      

  3.   

    付费编号主表
    编号和费用子表
    TABLE 内最外围,循环付费编号作为 JavaBean 的传入参数
    由JavaBean 得到付费编号参数后,输出每一个付费编号下的所有记录到单元格
    当然,不用JavaBean也可以,不过就是纯JSP代码看上去比较不容易读
      

  4.   

    求得记录集:
    付费编号  号码      费用 
        12345566  5605741  20.0 
        12345566  5605791  25.0 
        12345566  5605711  20.0     22222222  5601234  20.0 
        22222222  5812839  25.0     11111111  5589234  10.0 
        11111111  5672939  2.0  在java程序里遍历这个记录集
    string num = "";
    int sum = 0;
    HashMap sumMap = new HashMap();
    for(...){
        if(num!=0&&num!=xxx.getNum()){
            sumMap.add(num,sum);
            sum = 0;
            num = xxx.getNum();
        }
        sum += xxx.getCharge();
        ...
    }
      

  5.   

    SELECT DISTINCT 语句
    关键词 DISTINCT 用于返回唯一不同的值。SELECT 语句会从表的列中返回信息。但是假如我们仅仅希望获取唯一不同的元素呢?通过 SQL,我们所要做到所有事情就是向 SELECT 语句添加 DISTINCT 关键词:语法:
    SELECT DISTINCT 列名称 FROM 表名称可以用 SELECT DISTINCT 付费编号  FROM 表名称 得到没有重复编号的数据。排序,依次select
      

  6.   

    去sql区问问,用存储过程做啦,数据库计算速度应该是比较快的啦,不过要看你数据量有多大
      

  7.   

    这个是个很简单的问题!
    你用select 付费编号, sum(费用 ) group by 付费编号  
    它得到的是一个数组,
    可以这样
    List list=DAO.getfufei();
    List<Fufeibianhao>; newlist=new ArrayList<Fufeibianhao>();
    for(int i=0;i<list.size();i++)
    {
    Object[] obj=(Object[])list.get(i);
    String 付费编号=(String)obj[0];
    int       费用=(int)obj[1];
    //然后把这两个值存到一个bean里。
    Dianhuafeiyong dhfy= new Dianhuafeiyong();
    dhfy.setFufeibianhao(付费编号);
    dhfy.setFeiyong(费用);
    //然后把这个bean保存到一个新的List里。
    newlist.add(dhfy);
    }//保存在requst或者session里,然后在前台取出newlist循环就可以了。
    以下是我的代码
    给你看看
    List list1=hand.getMobile("YES", "", "", "", "", -1, "","", "", "","", "", "", "", "", "", "", "", "", "", "");
     List<Handset> list2=new ArrayList<Handset>();
     //List list=hand.getSETTEST()
     for(int i=0;i<list1.size();i++)
     {
     HandsetInfoDAO h=new HandsetInfoDAO();
     Handset handset=new Handset();
     Object ob[]=(Object[])list1.get(i);
     HandsetInfo handsetInfo=(HandsetInfo)h.findById((Integer) ob[0]);
     handset.setHandsetInfo(handsetInfo);
     handset.setMSale((Integer) ob[1]);
     handset.setMPrcie((Double) ob[2]);
     list2.add(handset);
             }楼主解决了记得给我通知下!如果不是很明白就给我发email:[email protected]
      

  8.   

    妈的真笨哦,我都没想到呢,所有的合计全部在页面上做不久好了吗? 哈哈哈哈哈哈哈你在页面上定义一个变量,把所有相同费用的编号的费用全部加起来就完事大吉了呀~~~list="select * from tablename";  //这个你会吧; 页面上
    <html>
    <body>
    <table>
    <tr>
    <td>编号</td><td>号码</td><td>费用</td>
    </tr>
    <%
     float j=0;
     for(int i;i<list.size();i++)
     { 
    %>
      <tr><td>vo.ger编号()</td><td>vo.get号码()</td><td>vo.get费用()</td></tr>
    <%
        String sss="";
        sss=vo.get费用编号();
         if(sss.equals(sss=vo.get费用编号()))
         {
             j=j+vo.get费用();                             //注意要转类型;
         }else{
             out.print("<tr><td colspan="3">"+j+"</td></tr>");    //第一个编号的计算已经完成了所以打印出来;
             j=0;                                        //回收j;
         }  

    %>
    </table>
    </body>
    </html>哈哈啊哈哈  分全缴,全缴...............
    不全给那边是太对不起我给你写了这么久...................
      

  9.   

    sorry  改下  不然格式不对
    <html> 
    <body> 
    <table> 
    <tr> 
    <td>编号 </td> <td>号码 </td> <td>费用 </td> 
    </tr> 
    <% 
    float j=0; 
    String sss=""; 
    for(int i;i <list.size();i++) 

      if(sss.equals(sss=vo.get费用编号())) 
        { 
            j=j+vo.get费用();                            //注意要转类型; 
        }else{ 
            out.print(" <tr> <td colspan="3">"+j+" </td> </tr>");    //第一个编号的计算已经完成了所以打印出来; 
            j=0;                                        //回收j; 
        }  %> 
      <tr> <td>vo.ger编号() </td> <td>vo.get号码() </td> <td>vo.get费用() </td> </tr> 
    <% 
            sss=vo.get费用编号(); 
        } 
    %> 
    </table> 
    </body> 
    </html> 
      

  10.   

    soory 再改下  呵呵<html> 
    <body> 
    <table> 
    <tr> 
    <td>编号 </td> <td>号码 </td> <td>费用 </td> 
    </tr> 
    <% 
    float j=0; 
    String sss=""; 
    for(int i;i <list.size();i++) 

      if(sss.equals(sss=vo.get费用编号())) 
        {           
        }else{ 
            out.print(" <tr> <td colspan="3">"+j+" </td> </tr>");    //第一个编号的计算已经完成了所以打印出来; 
            j=0;                                        //回收j; 
        }  %> 
      <tr> <td>vo.ger编号() </td> <td>vo.get号码() </td> <td>vo.get费用() </td> </tr> 
    <% 
            sss=vo.get费用编号(); 
            j=j+vo.get费用();  //注意要转类型; 
        } 
    %> 
    </table> 
    </body> 
    </html>这下对了
      

  11.   

    out.print(" <tr> <td colspan="3">"+j+" </td> </tr>");    //第一个编号的计算已经完成了所以打印出来; 就是合计的了
      

  12.   

    使用sql语句写程序能简化很多的。
      

  13.   

    他这个用一个sql还解决不了,又是全部查出来,记录多了影响性能。在页面上合计,这样做的话简介大方,自然明了
      

  14.   


     select id,sum(xj) from telephone group by id;
    这样可以将id,及每个id(付费编号)对应的和算出,然后再利用读出的id去读数据库,
    使用一个数组存放id,设置循环每读一个数组元素将它传给下面的变量应该就可以显示了。
     select * from telephone where id=变量;
      

  15.   

    简单
    楼主搜一搜displaytag,自动合计,分页。
    http://chytmaths.blog.163.com/blog/static/29482972200792282546455/
      

  16.   

    就像你的查询没有全部数据一样,你的不也是全部数据吗?我的查询不过是既包含了数据,又包含了数据汇总而已,而你是将汇总拿到了web服务器上计算而已,我的web服务器不用计算,只要展现一下数据就行。
      

  17.   

    他是考验你 哈哈 
      好好干  比你走可能是骗你的
    欢迎来
    我们的java世界ourjavasky 针对层次不同量身学习java技术
    http://www.ourjavasky.cn
      

  18.   


    这个 trim() 是个什么函数阿? SQL2K里好像没有这个哦。
      

  19.   


    我的JSP水平还不够,不过下次我会试验一下你的方法,还是感谢你,有分!