显示表中每种产品的总金额
Posted
技术标签:
【中文标题】显示表中每种产品的总金额【英文标题】:Display total amount of each products on the table 【发布时间】:2021-03-26 04:26:36 【问题描述】:我有一个名为 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
【问题讨论】:
【参考方案1】:您可以在查询结果的每一行加上窗口总和:
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
相同的级别。据我了解你的问题,你已经有了这个逻辑。
【讨论】:
输出正是我所需要的。现在,我只需要在行标题和值之后显示总计,谢谢。以上是关于显示表中每种产品的总金额的主要内容,如果未能解决你的问题,请参考以下文章
如何在单个语句中的Northwind数据库的Order Details表中获取每个产品的总销售额?