В MSSQL у меня есть таблица (ProductRecipe), которая содержит до 5 различных компонентов продуктов.Затем у меня есть набор данных, который содержит отдельные компоненты и их стоимость.
То, что я пытаюсь сделать, - это найти все различные сочетания / комбинации, которые удовлетворят моему рецепту.
CREATE TABLE #ProductRecipe (ProductRecipeID INT, Component1 INT, Component2 INT, Component3 INT, Component4 INT, Component5 INT)
CREATE TABLE #ComponentPricing (RowID INT, PricingID INT, ProductID INT, ProductDescription VARCHAR(50), Cost DECIMAL(18,6))
INSERT INTO #ProductRecipe (ProductRecipeID, Component1, Component2) VALUES (21, 130, 468)
INSERT INTO #ComponentPricing (RowID, PricingID, ProductID, ProductDescription, Cost)
VALUES (1, 314023, 130, 'ULS2', 1.783800)
, (2, 313616, 130, 'ULS2', 1.783800)
, (3, 313071, 130, 'ULS2', 1.794000)
, (4, 312865, 130, 'ULS2', 1.789500)
, (5, 316323, 468, 'B100', 1.550500)
SELECT * FROM #ProductRecipe
SELECT * FROM #ComponentPricing
DROP TABLE #ProductRecipe
DROP TABLE #ComponentPricing
В результате я пытаюсь достичь того, что в итоге получаю4 различных варианта рецепта, поскольку первые 4 записи (для ProductID 130) можно смешивать с последней записью (ProductID 468).Только эти два продукта могут быть смешаны, потому что это два компонента, определенные в моей таблице ProductRecipe.
Желаемый результат: строки 1 + 5 идут вместе, строки 2 + 5 идут вместе, строки 3 + 5 идут вместе,Строки 4 + 5 идут вместе;Возвращение столбца PricingID.
ProductRecipeID Component1 Component2 Component3 Component4 Component5
21 314023 316323
21 313616 316323
21 313071 316323
21 312865 316323