java - 显示表中每种产品的总金额
问题描述
我有一个prod_Table
从 SQL 查询中得到的名为的表:
SELECT PROD_ID, PROD_NAME, AMT, FROM ITEMS ORDER BY PROD_NAME;
我正在使用 itextpdf 来显示表格。我能够根据PROD_NAME
:
APPLE
PROD_ID | AMT
11111 12.75
22222 13.75
33333 14.75
ORANGE
PROD_ID | AMT
44444 15.75
55555 16.75
但现在我想在每个产品的总数下方显示。输出是这样的:
APPLE
PROD_ID | AMT
11111 12.75
22222 13.75
33333 14.75
TOTAL: 41.25
ORANGE
PROD_ID | AMT
44444 15.75
55555 16.75
TOTAL: 32.5
这是我能做的最好的,输出甚至都不正确。我几乎被困住了。
List<String> prod_Names = new ArrayList<>();
int total = 0;
while(rs.next()){
String prodName = rs.getString(2);
if (!prod_Names.contains(prodName)){
prod_Names.add(prodName);
PdfPCell name = new PdfPCell(new Phrase(prodname, bold));
name.setColspan(2);
prod_Table.addCell(name);
prod_Table.addCell(new Phrase("PROD_ID", header_Bold));
prod_Table.addCell(new Phrase("AMT", header_Bold));
}
String prodId_Values = result.getInt(1);
int amt_Values = result.getInt(3);
total += amt_Values;
//Display Values
prod_Table.addCell(new Phrase(Integer.toString(prodId_Values), normalFont));
prod_Table.addCell(new Phrase(Integer.toString(amt_Values), normalFont));
// Display Total
prod_Table.addCell(new Phrase("TOTAL:", normalFont));
prod_Table.addCell(new Phrase(Integer.toString(total), normalFont));
}
我的代码的输出:
APPLE
PROD_ID | AMT
11111 12.75
TOTAL: 12.75
22222 13.75
TOTAL: 26.5
33333 14.75
TOTAL: 41.25
ORANGE
PROD_ID | AMT
44444 15.75
TOTAL: 57.00
55555 16.75
TOTAL: 73.75
解决方案
您可以将总数放在查询结果的每一行上,并带有一个窗口总和:
select prod_id, prod_name, amt, sum(amt) over(partition by prod_name) as total_amt
from items
order by prod_name;
然后剩下要做的就是安排应用程序代码,使其total_amt
显示在与prod_name
. 据我了解你的问题,你已经有了这个逻辑。
推荐阅读
- python-3.x - “范围”对象不支持 python3 中的项目分配
- python - 使用 JmesPath 过滤 CloudTrail 日志
- android - 如何在 android 中优化 Emoji 渲染?
- winapi - 使用淡入过渡显示窗口 2 次以上
- git - 致命:无法访问“https://github.com/usename/my-project.git/”:请求的 URL 返回错误:403 Mac
- c# - C# Unity JsonUtility,如何将这个简单的 json 转换为某种有用的 c# 对象?
- html - 如何使一个元素中的文本与另一个元素中的文本内联显示?
- django - 如何从 aws 管理控制台或 aws cli 为 S3 对象创建对象批准
- c# - 将用户添加到 Discord 公会,Discord.Net c#
- python - USACO 竞赛新规则与标准输入和输出