Привет, ребята. У меня есть этот сохраненный процесс, использующий таблицу подсчета, но когда я удалил код и попытался создать вычисляемый столбец, чтобы добиться того же, он испортил программу, как вы видите здесь, в столбце строки qty есть 1что он должен делать, получая этот кол-во из таблицы подсчета, но когда я удалил этот код во второй хранимой процедуре, перечисленной ниже.
Основная проблема, которую я вижу, как вы видите, заключается в том, что строка qty отображается как нольв настоящее время.
SELECT pp.ProductionPlanID, pp.WeekStartDate, pp.WeekEndDate, ppi.ProductionPlanItemID, ppi.SOPOrderReturnLineID, bat.ProductionPlanBatchID, sop.DocumentNo, cust.CustomerAccountName,
bat.Name AS BatchName, si.ItemID, si.Code AS StockCode, si.Name AS StockName, sopLine.AllocatedQuantity, o.Quantity AS LineQty
FROM FUEL_ProductionPlan pp LEFT JOIN
FUEL_ProductionPlanItem ppi ON pp.ProductionPlanID = ppi.ProductionPlanID LEFT JOIN
FUEL_ProductionPlanBatch ppb ON ppi.ProductionPlanBatchID = ppb.ProductionPlanBatchID LEFT JOIN
SOPOrderReturnLine sopLine ON ppi.SOPOrderReturnLineID = sopLine.SOPOrderReturnLineID LEFT JOIN
SOPOrderReturn sop ON sopLine.SOPOrderReturnID = sop.SOPOrderReturnID LEFT JOIN
SLCustomerAccount cust ON sop.CustomerID = cust.SLCustomerAccountID LEFT JOIN
StockItem si ON sopLine.ItemCode = si.Code LEFT JOIN
FUEL_ProductionPlanBatch bat ON ppi.ProductionPlanBatchID = bat.ProductionPlanBatchID LEFT JOIN
FUEL_Boxed boxed ON sopLine.SOPOrderReturnLineID = boxed.SopItemLineID AND pp.ProductionPlanID = boxed.ProductionPlanID CROSS APPLY
(SELECT 1
FROM master..spt_values v
WHERE v.type = 'P' AND v.number < (sopLine.AllocatedQuantity - ISNULL(boxed.QtyBoxed, 0))) o(Quantity)
WHERE sopLine.AllocatedQuantity > 0
Этот код вызывает проблему здесь.
(SELECT 1
FROM master..spt_values v
WHERE v.type = 'P' AND v.number < (sopLine.AllocatedQuantity - >
ISNULL(boxed.QtyBoxed, 0)))
o(Quantity)

Как вы можетевидите, здесь правильно выводится строка qty.
Это мой измененный запрос, который, как я думал, будет выполнять то же самое, что и таблица разбиения, но это не так, и это вызывает проблемы.
SELECT pp.ProductionPlanID, pp.WeekStartDate, pp.WeekEndDate, ppi.ProductionPlanItemID, ppi.SOPOrderReturnLineID, bat.ProductionPlanBatchID, sop.DocumentNo,
cust.CustomerAccountName, bat.Name AS BatchName, si.ItemID, si.Code AS StockCode, si.Name AS StockName, sopLine.AllocatedQuantity, boxed.QtyBoxed,
ISNULL(sopLine.AllocatedQuantity - boxed.QtyBoxed, 0) AS LineQty
FROM dbo.FUEL_ProductionPlan AS pp LEFT OUTER JOIN
dbo.FUEL_ProductionPlanItem AS ppi ON pp.ProductionPlanID = ppi.ProductionPlanID LEFT OUTER JOIN
dbo.FUEL_ProductionPlanBatch AS ppb ON ppi.ProductionPlanBatchID = ppb.ProductionPlanBatchID LEFT OUTER JOIN
dbo.SOPOrderReturnLine AS sopLine ON ppi.SOPOrderReturnLineID = sopLine.SOPOrderReturnLineID LEFT OUTER JOIN
dbo.SOPOrderReturn AS sop ON sopLine.SOPOrderReturnID = sop.SOPOrderReturnID LEFT OUTER JOIN
dbo.SLCustomerAccount AS cust ON sop.CustomerID = cust.SLCustomerAccountID LEFT OUTER JOIN
dbo.StockItem AS si ON sopLine.ItemCode = si.Code LEFT OUTER JOIN
dbo.FUEL_ProductionPlanBatch AS bat ON ppi.ProductionPlanBatchID = bat.ProductionPlanBatchID LEFT OUTER JOIN
dbo.FUEL_Boxed AS boxed ON sopLine.SOPOrderReturnLineID = boxed.SopItemLineID AND pp.ProductionPlanID = boxed.ProductionPlanID
WHERE (sopLine.AllocatedQuantity > 0)
Это код, который я заменил на него, хотя мне бы этого было достаточно, но, очевидно, его нет.
ISNULL(sopLine.AllocatedQuantity - boxed.QtyBoxed, 0) AS LineQty

Пожалуйста, извинитемое невежество в таблице учета у меня невИз-за того, что я использовал один в моей жизни, проблема в том, что некоторые продукты не появляются в наборе результатов, и мы пытаемся понять, почему это ошибка старого программиста, которого у нас больше нет.