Khi nhìn vào ảnh chụp màn hình của bạn, có vẻ như nó đang sao chép dựa trên số lượng thẻ ở mỗi vị trí. Điều này sẽ là từ kết hợp trên các thẻ để có thể lọc các vị trí. Bằng cách thêm một điểm riêng biệt vào truy vấn của bạn, nó sẽ loại bỏ các giá trị cơ sở dữ liệu trùng lặp. Sau khi làm điều đó, bạn có thể muốn bật lại hiển thị các giá trị trùng lặp vì sau đó nó sẽ không hiển thị nếu bạn thực hiện cùng một số lượng và giá trị mua hàng cho một phần nhất định.
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