Мне нужно объединить две следующие запросы ...Как объединить два запроса?
SELECT Products.ProductId, Products.ProductDescription, SUM(Inventory.QuantityOutstanding) AS Inventory, Products.AverageCost AS Cost
FROM Products INNER JOIN
Inventory ON Products.Product = Inventory.Product
WHERE (Inventory > 0) AND (Products.ProductId LIKE 'CAS%') OR
(Products.ProductId LIKE 'ASY%')
GROUP BY Products.ProductId, Products.ProductDescription, Products.AverageCost
ORDER BY Products.ProductId
Что дает таблицу как ...
ProductID ProductDescription Inventory Cost
-------------------------------------------------------
AB CD 0??? 0
UV XY 5 555
. . . .
. . . .
. . . .
И
SELECT Components.ProductId, SUM(SalesOrderItems.QuantityOutstanding) AS Schedule
FROM Structures INNER JOIN
Products AS Components ON Structures.Component = Components.Product INNER JOIN
Products AS Products ON Products.Product = Structures.Product AND
Structures.StructureVersion = Products.StructureVersion LEFT OUTER JOIN
SalesOrders INNER JOIN
SalesOrderItems ON SalesOrders.SalesOrder = SalesOrderItems.SalesOrder ON
Products.Product = SalesOrderItems.Product
WHERE ((Components.ProductId LIKE 'CAS%') OR (Components.ProductId LIKE 'ASY%')) AND (SalesOrderItems.DueDate < DATEADD(m, 3, GETDATE())) AND (SalesOrderItems.QuantityOutstanding > 0)
GROUP BY Components.ProductId, Products.ProductId
ORDER BY Components.ProductId
Что дает таблица вроде .. .
ProductId Schedule
-------------------------
AB 360
UV 3
. .
. .
. .
Я в принципе хочу иметь таблицу, которая отображает ProductId (Inventory - Schedule) AS XSStock, и затрат, как это ...
ProductId XSStock (>0 only) Cost
-------------------------------------------
UV 2 222
. . .
. . .
. . .
Я думал, что это может быть UNION или подзапросов, но я не могу похоже, что они работают?
Я только недавно начал использовать SQL, поэтому, если бы вы могли объяснить свой ответ, это было бы здорово!
KATIA EDIT QUERY:
SELECT ProductId, ProductDescription, Inventory, Cost, SUM(Orders) AS Demand, (Inventory - SUM(Orders)) AS XSStock
FROM (SELECT X.ProductId, X.ProductDescription, X.Inventory, X.Cost, SUM(Y.Schedule) AS Orders
FROM (SELECT Products.ProductId, Products.ProductDescription, SUM(Inventory.QuantityOutstanding) AS Inventory, Products.AverageCost AS Cost
FROM Products INNER JOIN
Inventory ON Products.Product = Inventory.Product
WHERE (Products.ProductId LIKE 'CAS%') OR
(Products.ProductId LIKE 'ASY%')
GROUP BY Products.ProductId, Products.ProductDescription, Products.AverageCost) AS X,
(SELECT Components.ProductId, SUM(SalesOrderItems.QuantityOutstanding) AS Schedule
FROM Structures INNER JOIN
Products AS Components ON Structures.Component = Components.Product INNER JOIN
Products AS Products ON Products.Product = Structures.Product AND
Structures.StructureVersion = Products.StructureVersion LEFT OUTER JOIN
SalesOrders INNER JOIN
SalesOrderItems ON SalesOrders.SalesOrder = SalesOrderItems.SalesOrder ON
Products.Product = SalesOrderItems.Product
WHERE ((Components.ProductId LIKE 'CAS%') OR (Components.ProductId LIKE 'ASY%')) AND (SalesOrderItems.DueDate < DATEADD(m, 3, GETDATE())) AND (SalesOrderItems.QuantityOutstanding > 0)
GROUP BY Components.ProductId, Products.ProductId) AS Y
WHERE (Y.ProductId LIKE X.ProductId)
GROUP BY X.ProductId, X.ProductDescription, X.Inventory, X.Cost)
WHERE ((Inventory - SUM(Orders)) > 0)
GROUP BY ProductId, ProductDescription, Inventory, Cost
ORDER BY ProductId
Сейчас я получаю сообщение об ошибке ...
Incorrect syntax near the keyword 'WHERE'
Это в строке 30, но я не знаю, почему?
На стороне записки ... The верхний запрос по-прежнему отображает результаты, где Inventory = 0, как я могу это исправить? –
Дайте нам образец результата для двух исходных запросов и покажите нам ожидаемый результат для комбинированного запроса! – jarlh
OR (Products.ProductId LIKE 'ASY%'), вероятно, является причиной того, что ваш запрос возвращает значение, даже если инвентарь равен 0. –