Я пробовал несколько разных способов устранения дубликатов. Я отправил результаты своего запроса, а также показал, как должны выглядеть конечные результаты.
WITH CTE AS (
SELECT DISTINCT
a.SiteID
,a.SiteDescription
,iv.VendorNumber
,iv.VendorName
,mrh.DateReceived
,mrh.DocumentNumber
,mrh.InvoiceDate
,mrh.InvoiceNumber
,i.StockNumber
,i.StockDescription
,ia.UnitsPerPack
,mrh.ReceivingComment
,ia.BrokenQuantityAdjustment
,ia.BasePackCost
,mri.BrokenQuantityAdjusted
,ia.fee
FROM AdmSites a, InvVendors iv, InvItems i, InvManualReceivingHeader mrh, InvAdjustments ia, InvManualReceivingItems mri, InvManualReceivingItemsAdjustments ria
WHERE a.AdmSiteID = mrh.AdmSiteId
AND a.AdmSiteID = ia.AdmSiteID
AND i.InvItemID = ia.InvItemID
AND iv.InvVendorID = ia.InvVendorID
AND mrh.DateReceived = ia.AdjustmentDate
AND ria.DateReceived = mrh.DateReceived
AND ia.InvoiceNumber = mrh.InvoiceNumber
AND mrh.InvoiceNumber = 'deleted'
AND ia.InvoiceDate BETWEEN '2017-05-01' AND '2018-08-22'
AND (ia.InvoiceNumber LIKE '%' + ia.InvoiceNumber + '%' OR ia.InvoiceNumber IS NULL)
)
SELECT t1.*, t2.PackQty, t1.BasePackCost * t2.PackQty as TotalCost, t1.BasePackCost * t2.PackQty as TotalValue
FROM CTE t1 INNER JOIN
(SELECT SUM(BrokenQuantityAdjustment)PackQty, BasePackCost
FROM CTE
GROUP BY BasePackCost
) t2 on t1.BasePackCost = t2.BasePackCost
ORDER BY StockNumber, BasePackCost
Мои результаты из списка запросов выше:
SiteID SiteDescription VendorNumber VendorName DateReceived DocumentNumber InvoiceDate InvoiceNumber StockNumber StockDescription UnitsPerPack ReceivingComment BrokenQuantityAdjustment BasePackCost BrokenQuantityAdjusted fee PackQty TotalCost TotalValue
-------- ----------------- -------------- ------------ -------------- ---------------- ------------- --------------- ------------- --------------------------- -------------- ------------------ -------------------------- -------------- ------------------------ ----- --------- ----------- ------------
69 Madison High 4 DAIRY 05/03/18 939 06/04/18 deleted 1451 MILK WHITE 1% 1 -161 0.1615 0 0 89 14.3735 14.3735
69 Madison High 4 DAIRY 05/03/18 939 06/04/18 deleted 1451 MILK WHITE 1% 1 250 0.1615 0 0 89 14.3735 14.3735
69 Madison High 4 DAIRY 05/03/18 939 06/04/18 deleted 1451 MILK WHITE 1% 1 -89 0.1617 0 0 -89 -14.3913 -14.3913
69 Madison High 4 DAIRY 05/03/18 939 06/04/18 deleted 1580 MILK LACTAID FREE SKIM PF 1 -20 0.6185 0 0 0 0 0
69 Madison High 4 DAIRY 05/03/18 939 06/04/18 deleted 1580 MILK LACTAID FREE SKIM PF 1 20 0.6185 0 0 0 0 0
Ожидаемые результаты, если я смогу заставить этот запрос работать:
SiteID SiteDescription VendorNumber VendorName DateReceived DocumentNumber InvoiceDate InvoiceNumber StockNumber StockDescription UnitsPerPack ReceivingComment BrokenQuantityAdjustment BasePackCost BrokenQuantityAdjusted fee PackQty TotalCost TotalValue
-------- ---------------- -------------- ------------ -------------- ---------------- ------------- --------------- ------------- --------------------------- -------------- ------------------ -------------------------- -------------- ------------------------ ----- --------- ----------- ------------
69 Madison High 4 DAIRY 05/03/18 939 06/04/18 deleted 1451 MILK WHITE 1% 1 -161 0.1615 0 0 89 14.3735 14.3735
69 Madison High 4 DAIRY 05/03/18 939 06/04/18 deleted 1451 MILK WHITE 1% 1 -89 0.1617 0 0 -89 -14.3913 -14.3913
69 Madison High 4 DAIRY 05/03/18 939 06/04/18 deleted 1580 MILK LACTAID FREE SKIM PF 1 -20 0.6185 0 0 0 0 0
Вот код для создания таблицы и вставки данных, если это поможет.
CREATE TABLE mytable(
SiteID INTEGER NOT NULL PRIMARY KEY
,SiteDescription VARCHAR(12) NOT NULL
,VendorNumber INTEGER NOT NULL
,VendorName VARCHAR(5) NOT NULL
,DateReceived DATE NOT NULL
,DocumentNumber INTEGER NOT NULL
,InvoiceDate DATE NOT NULL
,InvoiceNumber VARCHAR(50) NOT NULL
,StockNumber INTEGER NOT NULL
,StockDescription VARCHAR(25) NOT NULL
,UnitsPerPack BIT NOT NULL
,ReceivingComment VARCHAR(30)
,BrokenQuantityAdjustment INTEGER NOT NULL
,BasePackCost NUMERIC(6,4) NOT NULL
,BrokenQuantityAdjusted BIT NOT NULL
,fee BIT NOT NULL
,PackQty INTEGER NOT NULL
,TotalCost NUMERIC(8,4) NOT NULL
,TotalValue NUMERIC(8,4) NOT NULL
);
INSERT INTO mytable(SiteID,SiteDescription,VendorNumber,VendorName,DateReceived,DocumentNumber,InvoiceDate,InvoiceNumber,StockNumber,StockDescription,UnitsPerPack,ReceivingComment,BrokenQuantityAdjustment,BasePackCost,BrokenQuantityAdjusted,fee,PackQty,TotalCost,TotalValue) VALUES (69,'Madison High',4,'DAIRY','5/3/2018',939,'6/4/2018','deleted',1451,'MILK WHITE 1%',1,NULL,-161,0.1615,0,0,89,14.3735,14.3735);
INSERT INTO mytable(SiteID,SiteDescription,VendorNumber,VendorName,DateReceived,DocumentNumber,InvoiceDate,InvoiceNumber,StockNumber,StockDescription,UnitsPerPack,ReceivingComment,BrokenQuantityAdjustment,BasePackCost,BrokenQuantityAdjusted,fee,PackQty,TotalCost,TotalValue) VALUES (69,'Madison High',4,'DAIRY','5/3/2018',939,'6/4/2018','deleted',1451,'MILK WHITE 1%',1,NULL,250,0.1615,0,0,89,14.3735,14.3735);
INSERT INTO mytable(SiteID,SiteDescription,VendorNumber,VendorName,DateReceived,DocumentNumber,InvoiceDate,InvoiceNumber,StockNumber,StockDescription,UnitsPerPack,ReceivingComment,BrokenQuantityAdjustment,BasePackCost,BrokenQuantityAdjusted,fee,PackQty,TotalCost,TotalValue) VALUES (69,'Madison High',4,'DAIRY','5/3/2018',939,'6/4/2018','deleted',1451,'MILK WHITE 1%',1,NULL,-89,0.1617,0,0,-89,-14.3913,-14.3913);
INSERT INTO mytable(SiteID,SiteDescription,VendorNumber,VendorName,DateReceived,DocumentNumber,InvoiceDate,InvoiceNumber,StockNumber,StockDescription,UnitsPerPack,ReceivingComment,BrokenQuantityAdjustment,BasePackCost,BrokenQuantityAdjusted,fee,PackQty,TotalCost,TotalValue) VALUES (69,'Madison High',4,'DAIRY','5/3/2018',939,'6/4/2018','deleted',1580,'MILK LACTAID FREE SKIM PF',1,NULL,-20,0.6185,0,0,0,0,0);
INSERT INTO mytable(SiteID,SiteDescription,VendorNumber,VendorName,DateReceived,DocumentNumber,InvoiceDate,InvoiceNumber,StockNumber,StockDescription,UnitsPerPack,ReceivingComment,BrokenQuantityAdjustment,BasePackCost,BrokenQuantityAdjusted,fee,PackQty,TotalCost,TotalValue) VALUES (69,'Madison High',4,'DAIRY','5/3/2018',939,'6/4/2018','deleted',1580,'MILK LACTAID FREE SKIM PF',1,NULL,20,0.6185,0,0,0,0,0);