Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wiederholte Werte in iReport können nicht herausgefiltert werden

Wenn Sie sich Ihre Screenshots ansehen, scheint es, dass es basierend auf der Anzahl der Tags an jedem Standort dupliziert wird. Dies wäre von den Join-On-Tags, um die Standorte filtern zu können. Indem Sie Ihrer Abfrage einen Distinct hinzufügen, werden die doppelten Datenbankwerte ausgesondert. Danach möchten Sie wahrscheinlich die Anzeige doppelter Werte wieder aktivieren, da sie dann nicht angezeigt wird, wenn Sie für ein bestimmtes Teil die gleiche Menge und den gleichen Wert kaufen.

SELECT DISTINCT costlayer.qty AS Qty, costlayer.orgqty, costlayer.orgtotalcost,
costlayer.totalcost AS TotalCost, costlayer.datecreated AS DateCreated,
part.num AS PartNumber, part.description as PartDescription, asaccount.name as "InventoryAccount",
company.name AS company, currency.symbol

FROM CostLayer
LEFT JOIN Part ON part.id = costlayer.partid
LEFT JOIN Tag ON part.id = tag.partId
LEFT JOIN Location ON tag.locationId = location.id
LEFT JOIN LocationGroup ON location.locationGroupId = locationGroup.id
LEFT JOIN asaccount ON part.inventoryaccountid = asaccount.id
JOIN company ON company.id = 1
LEFT JOIN currency ON currency.homeCurrency = 1

WHERE costlayer.datecreated BETWEEN $P{dateRange1} AND $P{dateRange2}
AND costlayer.statusid IN ($P!{ckShowActiveCostingLayers},$P!{ckShowFulfilledCostingLayers},$P!{ckShowVoidedCostingLayers})
AND UPPER(part.num) LIKE UPPER($P{partNum})
AND (UPPER(COALESCE(asaccount.name,'')) LIKE UPPER('%' || $P{AssetAccount} || '%'))
AND LocationGroup.id LIKE $P{locationGroupID}

ORDER BY (CASE WHEN $P{AssetAccount} NOT LIKE CAST('%' AS varchar(256)) THEN asaccount.name ELSE part.num END), part.num ASC, costlayer.id, costlayer.datecreated