首先,我想说我已经看过,研究过并尝试过与SO相关的其他问题,这些问题可能与我遇到的这个问题有关。没有一个有效,也没有与此问题有关

我正在编写一个报告,该报告同时使用SO(销售订单)表和WO(工作订单)表中的数据。我在照片中显示2个场景。当我只用零件,描述,SO#和SO数量运行报告时,报告运行得很完美:)!

问题是当我添加WO表并添加值WO#和数量时。
我知道它必须与表如何连接或iReport设置有关。

为了弄清楚图片和表格中发生了什么,我将PART表用作主键,并且报告应该执行的操作是根据选定的部分向我显示仍在“未完成”的任何部分。 SO和WO。因此,SO可能仍然具有未被“挑选和打包”的部分,而WO也可能具有未被“挑选和打包”的部分,但是您可以拥有WO而没有SO,反之亦然。

问题:如何避免我的WO#和WO Qty值重复出现,并在最后弄乱我的总和?由于这些值是重复的,因此我的sum函数会不断将它们相加并给出错误的数字。
感谢您提供的任何帮助!



这些是照片。该报告非常完美,直到我添加了WO表和值-如照片所示。

mysql - iReport表联接问题并导致重复值-LMLPHP

mysql - iReport表联接问题并导致重复值-LMLPHP

mysql - iReport表联接问题并导致重复值-LMLPHP

mysql - iReport表联接问题并导致重复值-LMLPHP

现在接下来的四张照片是当我添加WO表以及之后的结果时



mysql - iReport表联接问题并导致重复值-LMLPHP

mysql - iReport表联接问题并导致重复值-LMLPHP

mysql - iReport表联接问题并导致重复值-LMLPHP

mysql - iReport表联接问题并导致重复值-LMLPHP

最佳答案

SO和WO之间似乎没有联系,因此将两者放在同一行似乎不正确。如果要在同一报告中查看两种类型的订单,则建议每一行都包含SO或WO的数据。要在同一报表上获得两种类型的订单,可以使用联合来分别返回每种类型的订单的结果。您需要添加某种“类型”列以显示要显示的订单类型。下面是可以实现此目的的查询。我只包含了对答案至关重要的列。希望你能明白。我不确定哪一列适合数量,因此可能需要更改。

SELECT
PART."NUM" AS PART_NUM,
PART."DESCRIPTION" AS PART_DESCRIPTION,
'Sales Order' AS RESULT_TYPE
SO."NUM" ORDER_NUMBER,
SOITEM."QTYTOFULFILL" AS QTY
FROM
"PART" PART
INNER JOIN "PRODUCT" PRODUCT ON PART."ID" = PRODUCT."PARTID" AND PRODUCT."ID" = PART."DEFAULTPRODUCTID"
INNER JOIN "SOITEM" SOITEM ON SOITEM."PRODUCTID" = PRODUCT."ID"
INNER JOIN "SO" SO ON SOITEM."SOID" = SO."ID"
WHERE
PART."NUM" = $P{partNUM}
UNION ALL
SELECT
PART."NUM" AS PART_NUM,
PART."DESCRIPTION" AS PART_DESCRIPTION,
'Work Order' AS RESULT_TYPE,
WO."NUM" AS ORDER_NUMBER,
WOITEM."QTYUSED" AS QTY
FROM
"PART" PART
INNER JOIN "PRODUCT" PRODUCT ON PART."ID" = PRODUCT."PARTID" AND PRODUCT."ID" = PART."DEFAULTPRODUCTID"
INNER JOIN "WOITEM" WOITEM ON PART."ID" = WOITEM."PARTID"
INNER JOIN "WO" WO ON WOITEM."WOID" = WO."ID"
WHERE
PART."NUM" = $P{partNUM}

关于mysql - iReport表联接问题并导致重复值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34070536/

10-16 08:04