要做的效果如下图所示:
做法是先在数据库里把金额合计算好,需要合并的行数也算好,然后放在页面上。因为公司是直接在jsp页面写java脚本的框架模式,所以大家参考修改一下即可。
//这里的ListStyle是公司框架有的,不必理会。
<table class=ListStyle>
<col width="10%"/>
<col width="10%"/>
<col width="10%"/>
<col width="10%"/>
<col width="10%"/>
<col width="10%"/>
<col width="10%"/>
<tr class=header>
<th>报销申请人</th>
<th>报销单条形码编号</th>
<th>收款名称</th>
<th>金额</th>
<th>收款账号</th>
<th>开户银行</th>
<th>合计</th>
</tr>
<%
//bill_id是传进去的id,moneysum是合计金额,sumrow是要合并的行数
String sql="select rm.applicant,rm.bar_code,rm.collection_name,rm.money,rm.bank,rm.collection_account,rm1.moneysum,rm1.sumrow"+
" from REIMBURSE rm left join (select collection_account,sum(money) as moneysum,count(1) as sumrow from REIMBURSE r where r.billid="+bill_id+" group by collection_account)"+
"rm1 on rm.collection_account=rm1.collection_account where rm.billid="+bill_id+" order by rm.collection_account";
//这一句是执行sql语句,视你自己的框架而定
RecordSet.executeSql(sql);
int flag=1;
while(RecordSet.next())
{
String applicant=RecordSet.getString("applicant");
String bar_code=RecordSet.getString("bar_code");
String collection_name=RecordSet.getString("collection_name");
Double money=RecordSet.getDouble("money");
String collection_account=RecordSet.getString("collection_account");
String bank=RecordSet.getString("bank");
int sumrow=RecordSet.getInt("sumrow");
Double moneysum=RecordSet.getDouble("moneysum");
%><tr>
<td><%=applicant%></td>
<td><%=bar_code%></td>
<td><%=collection_name%></td>
<td><%=money%></td>
<td><%=collection_account%></td>
<td><%=bank%></td>
<%
if(flag==1)
{%>
<td style="vertical-align:middle;" rowspan=<%=sumrow%>><%=moneysum%></td>
<%}
flag++;
if(flag>sumrow)
{
flag=1;
}
} %>
</tr>
</table>