我希望将特定帐号的所有“金额”值合计为双精度数或向量数。由于我的数据库有相同帐号的许多交易,我无法弄清楚如何获得所有记录的总价值。我的代码给我的最后交易金额值不是所有的总和。感谢任何帮助
ResultSet rs5 = (ResultSet) st1.executeQuery("SELECT Amount FROM Incoming_Transactions WHERE AccountNumber LIKE '" + accountnum+ "%'");
while (rs5.next()) {
Vector <Double> em = new Vector();
em.add(rs5.getDouble("Amount"));
Double [] myArray = em.toArray(new Double[0]);
check2 = myArray[0];
}
答案 0 :(得分:2)
如果您只想要所有金额的总和,并且不关心个别金额,您可以直接从执行SQL查询中获取它:
SELECT SUM(Amount) FROM Incoming_Transactions WHERE AccountNumber LIKE '" + accountnum+ "%'"
如果您要获取给定帐户的个别金额并自行计算金额,您可以迭代myArray
数组或em
向量并添加所有金额。如果选择此方法,请将em
的初始化移到循环外。
答案 1 :(得分:0)
while循环的每次迭代,您都在重置Vector<Double> em
。这意味着只有最新的元素实际上会在循环中结束。通过将Vector
的声明移到循环之外来解决这个问题
Vector <Double> em = new Vector();
ResultSet rs5 = (ResultSet) st1.executeQuery("SELECT Amount FROM Incoming_Transactions WHERE AccountNumber LIKE '" + accountnum+ "%'");
while (rs5.next()) {
em.add(rs5.getDouble("Amount"));
}
Double [] myArray = new Double[em.size()];
myArray = em.ToArray(myArray);
//Now do stuff with all the entries
如果你只对这个总和感兴趣,你可以像Eran建议的那样将总和移动到查询本身,或者在循环之外声明一个sum变量,并像每个循环一样更新它:
Double runningSum = 0.0;
ResultSet rs5 = (ResultSet) st1.executeQuery("SELECT Amount FROM Incoming_Transactions WHERE AccountNumber LIKE '" + accountnum+ "%'");
while (rs5.next()) {
runningSum += rs5.getDouble("Amount");
}
答案 2 :(得分:0)
以下查询将返回帐号和相应的金额总和
Select accountnumber,sum(amount) from Incoming_Transactions WHERE AccountNumber LIKE '" + accountnum+ "%' group by accountnumber
此外,如果您不想修改查询,您可以使用地图,其中accountnumer是关键,价值将是金额。如果您已在地图中添加帐号,则将金额添加到当前金额值,否则将新帐户添加到地图