Я пытаюсь использовать несколько подзапросов, но я получаю сообщение об ошибке. Он работает, если я удаляю второй подзапрос.Использование нескольких подзапросов в заявлении sql
Ошибка:
Msg 512, Level 16, State 1, Line 2 Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
USE SUPERSTARIS
SELECT lines.Item,
Inventory.ItemAlternative,
Inventory.OnHandPhys,
Inventory.Allocated,
Inventory.CostPrice,
replace(vInventoryOptional2Values.Value, '/', '') AS Brand,
Inventory.Optional3 AS StockStatus,
(SELECT SUM(l.Invoiced) * -1
FROM lines l
WHERE l.Date >= '2014-01-01'
AND l.Date <= '2014-01-31'
AND l.Item = lines.Item) AS QtySoldInPeriod,
(SELECT SUM(lines.AmountBase-lines.CostAmount)*-1
FROM lines l
WHERE l.Date >= '2014-01-01'
AND l.Date <= '2014-01-31'
AND l.Item = lines.Item) AS QtySoldInPeriod2
FROM lines
INNER JOIN inventory ON lines.item = Inventory.item
INNER JOIN vInventoryOptional2Values ON Inventory.Optional2 = vInventoryOptional2Values.RecordID
WHERE lines.Invoiced < 0
AND Inventory.Status = 0
AND Inventory.Optional3 <> 3
GROUP BY Lines.Item,
Inventory.Optional3,
Inventory.ItemAlternative,
Inventory.OnHandPhys,
Inventory.CostPrice,
vInventoryOptional2Values.Value,
Inventory.Allocated
Ну его точно, что ошибка говорит ... просто читать ... – Nightmaresux
Issue является здесь 'SUM (lines.AmountBase-lines.CostAmount)' (ваш второй подзапрос) использует псевдоним как 'SUM (l.AmountBase-l.CostAmount)' –
Подзапрос с 'sum()' и no 'group by' должен всегда возвращать одну строку. Вы уверены, что это точный запрос, который дает ошибку «возврат более одного значения»? – Andomar