繁体   English   中英

多部分标识符无法绑定SQL Server错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM