[英]SQL Server Subquery Error - The Multi-Part Identifier Could Not Be Bound
[英]The multi-part identifier could not be bound SQL Server error
我在SO和Google上搜索了一段时间,但似乎找不到与该错误有关的任何错误,而该错误发生在代码的设置部分中,如果确实发生在该部分中,则该解决方案无济于事。
我正在尝试使用用户输入的重量,然后减去总重量。 这等于收缩
SET @Shrink = @InputWeight - [ICPL].[OriginalQuantity_Stk];
我也这样尝试过,并得到了相同的错误。
SET @Shrink = @InputWeight - Sum([ICPL].[OriginalQuantity_Stk]);
该表称为IC_ProductLots
,别名为ICPL
我得到的错误是:
不能绑定多部分标识符“ ICPL.OriginalQuantity_Stk”。
如果有帮助,这是我的加入:
FROM
(((( IC_Products [PC]
INNER JOIN
DC_Transactions [DCT] ON [PC].ProductKey = [DCT].ProductKey)
INNER JOIN
AR_Customers ON [DCT].CustomerKey = AR_Customers.CustomerKey)
INNER JOIN
IC_ProductLots [ICPL] ON [DCT].LotKey = [ICPL].LotKey)
LEFT OUTER JOIN
IC_ProductCosts [ICP] ON ICP.ProductKey = PC.ProductKey
AND ICP.ProductCostCode = 5)
让我知道是否再有其他代码会有所帮助。
SET NOCOUNT ON;
DECLARE @PurchaseCost Decimal(19,8);
DECLARE @InputWeight Decimal(19,8);
DECLARE @Shrink Decimal(19,8);
SET @PurchaseCost = 1;
SET @InputWeight = 20;
SET @Shrink = @InputWeight;
SELECT DISTINCT
CAST([AR_Customers].[CustomerCode] AS NVARCHAR(40)) + ' - ' + CAST([AR_Customers].[Name] AS NVARCHAR(40)) AS [Supplier]
, [PC].ProductCode
, [PC].Description1
, Count([ICPL].OriginalQuantity_Alt) AS [Boxes]
, [ICPL].UnitOfMeasure_Alt
, Sum([ICPL].OriginalQuantity_Stk) AS [Weight]
, [ICPL].UnitOfMeasure_Stk
, [ICP].UnitCost AS [Unit Cost]
, Sum(ROUND([DCT].[Quantity_Stk] *[ICP].[UnitCost], 2)) AS [Total Sales]
, Avg(([ICPL].[OriginalQuantity_Stk] / [ICPL].[OriginalQuantity_Alt])) AS [Avg. Box Weight]
, @Shrink AS [Shrink]
FROM (((( IC_Products [PC]
INNER JOIN DC_Transactions [DCT]
ON [PC].ProductKey = [DCT].ProductKey)
INNER JOIN AR_Customers
ON [DCT].CustomerKey = AR_Customers.CustomerKey)
INNER JOIN IC_ProductLots [ICPL]
ON [DCT].LotKey = [ICPL].LotKey)
LEFT OUTER JOIN IC_ProductCosts [ICP]
ON ICP.ProductKey=PC.ProductKey and ICP.ProductCostCode=5)
WHERE
([ICPL].ProductionDate >= { ts '2015-06-24 00:00:00' } AND ([ICPL].ProductionDate <= { ts '2015-06-24 00:00:00' } OR [ICPL].ProductionDate Is Null))
AND ((1=1) AND AR_Customers.CustomerKey IN (124) )
GROUP BY
CAST([AR_Customers].[CustomerCode] AS NVARCHAR(40)) + ' - ' + CAST([AR_Customers].[Name] AS NVARCHAR(40))
, [PC].ProductCode
, [PC].Description1
, [ICPL].UnitOfMeasure_Alt
, [ICPL].UnitOfMeasure_Stk
, [ICP].UnitCost
, [ICPL].ProductionDate
, AR_Customers.CustomerKey
ORDER BY
CAST([AR_Customers].[CustomerCode] AS NVARCHAR(40)) + ' - ' + CAST([AR_Customers].[Name] AS NVARCHAR(40))
如果创建另一个变量来计算原始库存的总和,然后执行@InputWeight - @TotalSum
,会更容易吗?
样品输出:输入重量1,000
产品代码| 盒子| 重量 收缩
1234 | 2 | 250 |
2324 | 5 | 225 |
3234 | 4 | 175 |
4234 | 1 | 250 |
______________________________________
总计:| 12 | 900 | 100
收缩率是输入重量和总重量之差。 如果在每行中都可以显示该数字,但是如果遵循此示例,则该数字应在每行中显示为100。
引用SET
语句中的字段将不起作用-您实际上需要在某个时候SELECT
数据。 没有看到更多代码,我无法提供任何保证,但是我相信您正在尝试执行以下操作:
SET @Shrink = @InputWeight -
(
SELECT Sum([ICPL].[OriginalQuantity_Stk])
FROM IC_Products [PC]
INNER JOIN DC_Transactions [DCT]
ON [PC].ProductKey = [DCT].ProductKey
INNER JOIN AR_Customers
ON [DCT].CustomerKey = AR_Customers.CustomerKey
INNER JOIN IC_ProductLots [ICPL]
ON [DCT].LotKey = [ICPL].LotKey
LEFT OUTER JOIN IC_ProductCosts [ICP]
ON ICP.ProductKey=PC.ProductKey and ICP.ProductCostCode=5
WHERE ... -- add in your WHERE clause here
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.