合计成本并显示每个项目
Totaling up costs and Displaying each item
我正在写一份报告,我正在显示所有项目的 total cost
,具体取决于所选的 date range
。
目前所有项目都显示完美,但如果您注意到某些项目显示多次(默认情况下正常)。
我想对每一项进行合计,并且每一项只显示一次。
示例:
在我的照片中,您可以看到 SOFTT-W
部分显示了 5 次。我想让它只出现一次,但将 Cost
全部汇总并显示出来。我也希望所有项目都发生同样的事情。
我有办法做到这一点吗?
我将 post 我的 SQL 代码并附上截图。
SELECT
COMPANY."NAME" AS COMPANY_NAME,
CUSTOMER."NAME" AS CUSTOMER_NAME,
SO."NUM" AS SO_NUM,
SOITEM."STATUSID" AS SOITEM_STATUSID,
PRODUCT."ID" AS PRODUCT_ID,
PART."NUM" AS PART_NUM,
SOITEM."QTYFULFILLED" AS SOITEM_QTYFULFILLED,
SO."COST" AS SO_COST,
PART."ID" AS PART_ID,
SO."DATECOMPLETED" AS SO_DATECOMPLETED,
CUSTOMER."ID" AS CUSTOMER_ID,
SOSTATUS."ID" AS SOSTATUS_ID,
PARTCOST."TOTALCOST" AS PARTCOST_TOTALCOST,
SOITEM."TOTALCOST" AS SOITEM_TOTALCOST,
SO."CUSTOMERID" AS SO_CUSTOMERID
FROM
"CUSTOMER" CUSTOMER INNER JOIN "SO" SO ON CUSTOMER."ID" = SO."CUSTOMERID"
INNER JOIN "SOITEM" SOITEM ON SO."ID" = SOITEM."SOID"
INNER JOIN "SOSTATUS" SOSTATUS ON SO."STATUSID" = SOSTATUS."ID"
INNER JOIN "PRODUCT" PRODUCT ON SOITEM."PRODUCTID" = PRODUCT."ID"
INNER JOIN "PART" PART ON PRODUCT."ID" = PART."DEFAULTPRODUCTID"
AND PART."ID" = PRODUCT."PARTID"
INNER JOIN "PARTCOST" PARTCOST ON PART."ID" = PARTCOST."PARTID",
"COMPANY" COMPANY
WHERE
SO."STATUSID" = 60
AND (PART."ID" != 947)
AND CUSTOMER."ID" = $P{customerID}
AND SO."DATECOMPLETED" BETWEEN $P{From} AND $P{To}
最简单的解决方案是在语句末尾使用 order by。然后,您可以根据零件编号在 iReport 中使用一个组并对总成本求和。
SELECT
COMPANY.NAME AS COMPANY_NAME,
CUSTOMER.NAME AS CUSTOMER_NAME,
SO.NUM AS SO_NUM,
SOITEM.STATUSID AS SOITEM_STATUSID,
PRODUCT.ID AS PRODUCT_ID,
PART.NUM AS PART_NUM,
SOITEM.QTYFULFILLED AS SOITEM_QTYFULFILLED,
SO.COST AS SO_COST,
PART.ID AS PART_ID,
SO.DATECOMPLETED AS SO_DATECOMPLETED,
CUSTOMER.ID AS CUSTOMER_ID,
SOSTATUS.ID AS SOSTATUS_ID,
PARTCOST.TOTALCOST AS PARTCOST_TOTALCOST,
SOITEM.TOTALCOST AS SOITEM_TOTALCOST,
SO.CUSTOMERID AS SO_CUSTOMERID
FROM
CUSTOMER CUSTOMER INNER JOIN SO SO ON CUSTOMER.ID = SO.CUSTOMERID
INNER JOIN SOITEM SOITEM ON SO.ID = SOITEM.SOID
INNER JOIN SOSTATUS SOSTATUS ON SO.STATUSID = SOSTATUS.ID
INNER JOIN PRODUCT PRODUCT ON SOITEM.PRODUCTID = PRODUCT.ID
INNER JOIN PART PART ON PRODUCT.ID = PART.DEFAULTPRODUCTID
AND PART.ID = PRODUCT.PARTID
INNER JOIN PARTCOST PARTCOST ON PART.ID = PARTCOST.PARTID,
COMPANY COMPANY
WHERE
SO.STATUSID = 60
AND (PART.ID != 947)
AND CUSTOMER.ID = $P{customerID}
AND SO.DATECOMPLETED BETWEEN $P{From} AND $P{To}
ORDER BY customer.name, part.num
分组设置:
变量设置:
我正在写一份报告,我正在显示所有项目的 total cost
,具体取决于所选的 date range
。
目前所有项目都显示完美,但如果您注意到某些项目显示多次(默认情况下正常)。
我想对每一项进行合计,并且每一项只显示一次。
示例:
在我的照片中,您可以看到 SOFTT-W
部分显示了 5 次。我想让它只出现一次,但将 Cost
全部汇总并显示出来。我也希望所有项目都发生同样的事情。
我有办法做到这一点吗?
我将 post 我的 SQL 代码并附上截图。
SELECT
COMPANY."NAME" AS COMPANY_NAME,
CUSTOMER."NAME" AS CUSTOMER_NAME,
SO."NUM" AS SO_NUM,
SOITEM."STATUSID" AS SOITEM_STATUSID,
PRODUCT."ID" AS PRODUCT_ID,
PART."NUM" AS PART_NUM,
SOITEM."QTYFULFILLED" AS SOITEM_QTYFULFILLED,
SO."COST" AS SO_COST,
PART."ID" AS PART_ID,
SO."DATECOMPLETED" AS SO_DATECOMPLETED,
CUSTOMER."ID" AS CUSTOMER_ID,
SOSTATUS."ID" AS SOSTATUS_ID,
PARTCOST."TOTALCOST" AS PARTCOST_TOTALCOST,
SOITEM."TOTALCOST" AS SOITEM_TOTALCOST,
SO."CUSTOMERID" AS SO_CUSTOMERID
FROM
"CUSTOMER" CUSTOMER INNER JOIN "SO" SO ON CUSTOMER."ID" = SO."CUSTOMERID"
INNER JOIN "SOITEM" SOITEM ON SO."ID" = SOITEM."SOID"
INNER JOIN "SOSTATUS" SOSTATUS ON SO."STATUSID" = SOSTATUS."ID"
INNER JOIN "PRODUCT" PRODUCT ON SOITEM."PRODUCTID" = PRODUCT."ID"
INNER JOIN "PART" PART ON PRODUCT."ID" = PART."DEFAULTPRODUCTID"
AND PART."ID" = PRODUCT."PARTID"
INNER JOIN "PARTCOST" PARTCOST ON PART."ID" = PARTCOST."PARTID",
"COMPANY" COMPANY
WHERE
SO."STATUSID" = 60
AND (PART."ID" != 947)
AND CUSTOMER."ID" = $P{customerID}
AND SO."DATECOMPLETED" BETWEEN $P{From} AND $P{To}
最简单的解决方案是在语句末尾使用 order by。然后,您可以根据零件编号在 iReport 中使用一个组并对总成本求和。
SELECT
COMPANY.NAME AS COMPANY_NAME,
CUSTOMER.NAME AS CUSTOMER_NAME,
SO.NUM AS SO_NUM,
SOITEM.STATUSID AS SOITEM_STATUSID,
PRODUCT.ID AS PRODUCT_ID,
PART.NUM AS PART_NUM,
SOITEM.QTYFULFILLED AS SOITEM_QTYFULFILLED,
SO.COST AS SO_COST,
PART.ID AS PART_ID,
SO.DATECOMPLETED AS SO_DATECOMPLETED,
CUSTOMER.ID AS CUSTOMER_ID,
SOSTATUS.ID AS SOSTATUS_ID,
PARTCOST.TOTALCOST AS PARTCOST_TOTALCOST,
SOITEM.TOTALCOST AS SOITEM_TOTALCOST,
SO.CUSTOMERID AS SO_CUSTOMERID
FROM
CUSTOMER CUSTOMER INNER JOIN SO SO ON CUSTOMER.ID = SO.CUSTOMERID
INNER JOIN SOITEM SOITEM ON SO.ID = SOITEM.SOID
INNER JOIN SOSTATUS SOSTATUS ON SO.STATUSID = SOSTATUS.ID
INNER JOIN PRODUCT PRODUCT ON SOITEM.PRODUCTID = PRODUCT.ID
INNER JOIN PART PART ON PRODUCT.ID = PART.DEFAULTPRODUCTID
AND PART.ID = PRODUCT.PARTID
INNER JOIN PARTCOST PARTCOST ON PART.ID = PARTCOST.PARTID,
COMPANY COMPANY
WHERE
SO.STATUSID = 60
AND (PART.ID != 947)
AND CUSTOMER.ID = $P{customerID}
AND SO.DATECOMPLETED BETWEEN $P{From} AND $P{To}
ORDER BY customer.name, part.num
分组设置:
变量设置: