본질적으로 재고가 준비되어 있고, 주문 중이며, 표시가있는 디스플레이 쿼리가 있습니다. 한 부분을 제외하고는 모두 괜찮습니다. 무게와 양의 합계가 두 배로 된 결과를 반환합니다 (일부 금액이 주문 된 경우에만 해당). 내 조인을 채웠다 고 확신하지만 어떻게 될지 알 수 없습니다. (배 합)SQL OUTER JOIN 열 합계가 두 배로 반환됩니다.
전류 출력 :
PartNo Branch SOHWeight SOHQty ReservedQty SOOEa SOOTo AvgCost type product grade coating finish thickness width length dim1 dim2 Notes ClassFBR ClassFME ClassFSY AltoQty
-------------------------- ------ --------- ------ ----------- ----- ----- ------- ---- ------- ----- ------- ------ --------- ----- ------ ---- ---- -----
B-254-304---5--40-40-6000 FME 0.33 18 NULL NULL 1.5 68.7494 B ANGLE-E 304 NULL 5 NULL 6000 40 40 NULL C A B NULL
Warning: Null value is eliminated by an aggregate or other SET operation.
예상 출력 SOHWeight 및 SOHQty가 절반 (출력 전류에 비해)되어야한다는 것을 제외하고는 정확하게 동일한
주 :
- StockOnHand에는 동일한 ProductDesc (부품 번호)가있는 많은 PackNoID가 있습니다.
- 여러 예약이있을 수 있습니다 동일한 PackNoID 대해
SELECT dbo.tblProducts.PartNo,
'FME' AS Branch,
SUM(sOh.Weight) AS SOHWeight,
SUM(sOh.Quantity) AS SOHQty,
SUM(dbo.tblReserveDetail.Quantity) AS ReservedQty,
SUM(iif(dbo.tblPurchaseOrderDetail.QuantityUnit = 'TO', NULL, dbo.tblPurchaseOrderDetail.QuantityAmount)) AS SOOEa,
SUM(iif(dbo.tblPurchaseOrderDetail.QuantityUnit = 'TO', dbo.tblPurchaseOrderDetail.QuantityAmount, NULL)) AS SOOTo,
SUM(IIF(SoH.TYPE IN ('C', 'SC'), SoH.COST * SoH.WEIGHT, SoH.COST * SoH.QUANTITY) + PROCESSINGCOST + PROCESSINGFREIGHT + Packaging)/SUM(IIF(SoH.TYPE IN ('C', 'SC'), sOh.weight, sOh.Quantity)) AS AvgCost,
tblProducts.type,
tblProducts.product,
tblProducts.grade,
tblProducts.coating,
tblProducts.finish,
tblProducts.thickness,
tblProducts.width,
tblProducts.length,
tblProducts.dim1,
tblProducts.dim2,
tblProducts.Notes,
tblProducts.ClassFBR,
tblProducts.ClassFME,
tblProducts.ClassFSY,
SUM(IIF(SoH.STATUS = 'SC', SoH.QUANTITY, NULL)) AS AltoQty
FROM DBO.tblProducts
LEFT OUTER JOIN dbo.tblStockOnHand SoH
ON tblProducts.PartNo = SOH.ProductDesc
AND SoH.Status IN ('I', 'R', 'SC')
AND SoH.branch = 'FME'
LEFT OUTER JOIN dbo.tblReserveDetail
RIGHT OUTER JOIN dbo.tblReserveHeader
ON dbo.tblReserveHeader.ID = dbo.tblReserveDetail.ReserveID
AND tblReserveHeader.Completed = 0
AND tblReserveHeader.Cancelled = 0
ON SOH.PACKNOID = tblReserveDetail.PacknoID
LEFT OUTER JOIN tblPurchaseOrderDetail
ON dbo.tblPurchaseOrderDetail.ProductDesc = dbo.tblProducts.PartNo
AND (dbo.tblPurchaseOrderDetail.Status = N'O'
OR dbo.tblPurchaseOrderDetail.Status = N'PD')
AND tblPurchaseOrderDetail.branch = 'FME'
GROUP BY dbo.tblProducts.PartNo,
tblProducts.type,
tblProducts.product,
tblProducts.grade,
tblProducts.coating,
tblProducts.finish,
tblProducts.thickness,
tblProducts.width,
tblProducts.length,
tblProducts.dim1,
tblProducts.dim2,
tblProducts.Notes,
tblProducts.ClassFBR,
tblProducts.ClassFME,
tblProducts.ClassFSY
샘플 데이터 (벗었) tblStockOnHand :
PackNoID Status Weight Quantity Cost ProcessingCost ProcessingFreight Packaging Branch tblstockonhand.ProductDesc
157220 I 0.165 9 $68.47 $0.00 $2.48 $0.00 FME B-254-304---5--40-40-6000
158620 I 0.01839825 1 $64.27 $0.00 $4.72 $0.00 FSY B-254-304---5--40-40-6000
tblPurchaseOrderDetail
RecordId Status OrderNumber ItemNumber QuantityAmount QuantityUnit PriceQuantity PriceUnit Branch ProductDesc
6976 FD 4441 18 0.25 TO 3790 TO FBR B-254-304---5--40-40-6000
6936 O 4439 23 0.5 TO 3790 TO FME B-254-304---5--40-40-6000
6912 FD 4437 1 20 EA 75.96 EA FSY B-254-304---5--40-40-6000
tblPurchaseOrderHeader
을 오른쪽 외부 조인 세부 사항을보고하지 않고Status OrderNumber Branch
O 4439 FME
tblProducts
PartNo ClassFBR ClassFME ClassFSY Notes Type Product Grade Finish Coating Thickness Width Length Dim1 Dim2
B-254-304---5--40-40-6000 C A B B ANGLE-E 304 5 6000 40 40
@Squirrel – Squirrel
편집 영업 이익을 게시하시기 바랍니다. ( – JCro