无法绑定多部分标识符SQL Server错误
我搜索了SO和Google一段时间,但似乎找不到任何与代码集合部分发生的错误相关的信息,如果它确实发生在该部分,那么解决方案对我没有帮助 我试图使用用户输入的重量,并减去它的总重量。这等于心理医生无法绑定多部分标识符SQL Server错误,sql,sql-server,variables,Sql,Sql Server,Variables,我搜索了SO和Google一段时间,但似乎找不到任何与代码集合部分发生的错误相关的信息,如果它确实发生在该部分,那么解决方案对我没有帮助 我试图使用用户输入的重量,并减去它的总重量。这等于心理医生 SET @Shrink = @InputWeight - [ICPL].[OriginalQuantity_Stk]; 我也用这种方法试过了,但也犯了同样的错误 SET @Shrink = @InputWeight - Sum([ICPL].[OriginalQuantity_Stk]);
SET @Shrink = @InputWeight - [ICPL].[OriginalQuantity_Stk];
我也用这种方法试过了,但也犯了同样的错误
SET @Shrink = @InputWeight - Sum([ICPL].[OriginalQuantity_Stk]);
该表名为IC\u 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))
设置不计数;
声明@PurchaseCost小数(19,8);
声明@InputWeight十进制(19,8);
声明收缩小数(19,8);
设置@PurchaseCost=1;
设置@InputWeight=20;
设置@Shrink=@InputWeight;
选择不同的
将([AR_客户].[CustomerCode]转换为NVARCHAR(40))+'-'+将([AR_客户].[Name]转换为NVARCHAR(40))转换为[供应商]
,[PC]。产品代码
,[PC]。说明1
,将([ICPL].OriginalQuantity\u Alt)计数为[box]
,[ICPL]。测量单位
,总和([ICPL]。原始数量)为[重量]
,[ICPL]。计量单位
,[ICP]。单位成本为[单位成本]
,总和(四舍五入([DCT].[Quantity_Stk].[ICP].[UnitCost],2])为[总销售额]
,平均(([ICPL].[OriginalQuantity][u Stk]/[ICPL].[OriginalQuantity][u Alt])作为[Avg.Box Weight]
,@收缩为[收缩]
来自(((IC_产品[PC]
内部联接DC_事务[DCT]
在[PC]上。ProductKey=[DCT]。ProductKey)
内部连接AR_客户
在[DCT]上。CustomerKey=AR\u Customers.CustomerKey)
内部连接IC_产品批次[ICPL]
在[DCT].LotKey=[ICPL].LotKey上)
左外连接IC_产品成本[ICP]
关于ICP.ProductKey=PC.ProductKey和ICP.ProductCostCode=5)
哪里
([ICPL].ProductionDate>={ts'2015-06-24 00:00:00}和([ICPL].ProductionDate引用SET
语句中的字段将不起作用-您需要在某个时间点实际选择
数据。在看不到更多代码的情况下,我无法提供任何保证,但我相信您正在尝试执行以下操作:
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
)
是的,我认为更多的代码会有所帮助!您在提供问题的支持信息方面做得很好,这已经让您走在了前面,但我确实认为这将受益于包含更多的代码。单击原始问题下的“编辑”一词,并将其添加到中!删除parenthisis,这是用于de的裂开tables@AHiggins我为这份报告添加了我的其余代码。如果有帮助,请告诉我。谢谢,@Austin!现在,你到底想在这里做什么?所有行的@Shrink
值应该是相同的,还是取决于[OriginalQuantity]
?也许有几个示例输出行是有序的,这里…@AHiggins Shrink被假定为相同的值,因为它是inputwweight-sum[OriginalQuantity\u Stk]因此,整个报告的值应该是相同的。收缩基于报告的总重量,而不是每个项目的重量。让我知道这是否合理。当我尝试这样做时,我的公司使用的系统会出现一个错误,上面写着“多步操作生成错误。检查每个状态值。”我去掉了括号-再试一次。编辑1的想法是正确的,只是它拉出来的数字太离谱了。它每次显示的数字约为500万。感谢您提供的信息…我将以编辑3的形式加入一个新的提案,只有在您拥有最新版本的SQL Server时才有效。编辑1可能是关闭的,因为我没有包括您的WHERE
子句和其他内容…添加任何您需要的内容以使它们相同。好的,这就是我所想的。除非where子句是动态的,例如每个报告的日期将更改以及客户密钥,我将如何实现?