我有一个用于存储库存的表,当显示库存时,我想进行一些计算,并运行一个子查询,该子查询返回一个将在某些计算中使用的值。
我的出发点是:
SELECT [lineID]
,[SKUNumber]
,[ContainerNumber]
,[UnitsEaches]
,ISNULL((select Sum(QTY) from AllocatedInventory
Where AllocatedInventory.SKUNumber = Inventory.SKUNumber),0) as 'Allocated'
,[Bay]
,[Level]
,[Position]
,[VCP]
,[UnitWeight]
,[Comments]
,[DateReceived]
FROM [dbo].[Inventory]
我要做的第一件事是从UnitsEaches中减去子查询返回的分配数量,以计算AvailableInventory。当我尝试使用“分配的”添加SUM函数时,出现一条错误消息,提示“分配的是无效列”。
排序后,我需要通过将AvailableInventory除以VCP来计算主纸箱。
答案 0 :(得分:0)
您不能在定义别名的相同范围内引用别名。在这里,似乎横向联接是最简单的解决方案:
SELECT i.[lineID]
,i.[SKUNumber]
,[ContainerNumber]
,i.[UnitsEaches]
,ai.Allocated
,i.[UnitsEaches] - ai.Allocated as AvailableInventory
,i.[Bay]
,i.[Level]
,i.[Position]
,i.[VCP]
,i.[UnitWeight]
,i.[Comments]
,[DateReceived]
FROM [dbo].[Inventory]
OUTER APPLY (
SELECT COALESCE(SUM(ai.QTY), 0) allocated
FROM AllocatedInventory ai
WHERE ai.SKUNumber = i.SKUNumber
) ai