Я пишу какую-то базовую систему управления запасами и вам нужно рассчитать некоторые цифры, чтобы заказать товары у поставщиков.Повторное использование вычисленных столбцов в SQL-запросе или представлении
То, что я хотел бы сделать что-то вроде этого запроса:
SELECT [Articles].[ArticleId]
,(SELECT COALESCE(SUM([Quantity]),0) FROM [dbo].[InventoryTable] WHERE [InventoryTable].ArticleId = [Articles].[ArticleId]) AS 'QuantityInStorage'
,(SELECT COALESCE(SUM([Quantity]),0) FROM [dbo].[CustomerOrdersTable] WHERE [CustomerOrdersTable].ArticleId = [Articles].[ArticleId]) AS 'QuantityDeliverToCustomers'
,(SELECT COALESCE(SUM([Quantity]),0) FROM [dbo].[SupplierOrdersTable] WHERE [SupplierOrdersTable].ArticleId = [Articles].[ArticleId]) AS 'QuantityOrderedFromSupplier'
,[Reorderlevel]
,[RefillQuantityToLevel]
,CASE
WHEN [Reorderlevel] <> 0 THEN ([QuantityInStorage]+[QuantityOrderedFromSupplier]-[QuantityDeliverToCustomers])*100/[Reorderlevel] -- compute how important it is to restock on this item
WHEN ([QuantityInStorage]+[QuantityOrderedFromSupplier]-[QuantityDeliverToCustomers]) < 0 THEN -1 -- we don't want the article in storage but need to order it to send it to customers
ELSE 999 -- unimportant, don't order this stuff
END AS 'Importance' -- below zero is very important (need article to send to customer), below 100 is some kind important (refill storage), above 100 is not important
FROM [Articles]
WHERE [QuantityInStorage]-[QuantityDeliverToCustomers]+[QuantityOrderedFromSupplier]<[RefillQuantityToLevel]
ORDER BY [Importance]
Моей проблемы: Как я могу повторно использовать расчетные столбцы, как я пытаюсь в моем примере? SQL Server всегда показывает ошибку, если я попробую это.
Dang. Я искал два часа, не найдя этого - спасибо! – Sam