История вопроса:Сумма подзапроса?
Мы делаем корректировку цен в нашей базе данных. Корректировка цен основана на спецификации материалов, а также на каждой новой стоимости материалов. Поэтому я должен выбрать элемент из таблицы элементов, его спецификации и новой ценовой таблицы и скорректировать цену в зависимости от общего количества материалов, необходимых для создания каждого элемента. Элементы состоят из варьирования количества различных материалов, поэтому мастер запрос будет вызывать этот подзапрос, чтобы получить полную настройку:
select
ta.Code,
ta.Quantity,
(select tb.cost - tb.NewCost * ta.Quantity) as BOMEffect
from BOM TA
inner join ITEM TC on tC.ItemCode = tA.Father
inner join NewPriceTable TB on tA.Code = tB.Item
where TA.Father = '100-01'
and tc.PriceList = 3
order by ta.Father
который дает мне результаты (это все материалы одного элемента, количество каждого материал и корректировка цен):
Code Quantity BOMEffect
D .003 56.000000 -95.08
D .004 28.000000 -62
D .005 20.000000 -54.6
d .006 2.000000 -3.3
D .01 2.000000 -5.5
D .015 4.000000 -25.52
D .02 4.000000 -34
Все, что мне нужно от этого запроса - это общее значение BOMEffect (-280). Но если я просто заменить отборное заявление с:
select
sum((select tb.cost - tb.NewCost * ta.Quantity)) as BOMEffect
from BOM TA
inner join ITEM TC on tC.ItemCode = tA.Father
inner join NewPriceTable TB on tA.Code = tB.Item
where TA.Father = '100-01'
and tc.PriceList = 3
order by ta.Father
я получаю:
Cannot perform an aggregate function on an expression containing an aggregate or a subquery.
Я знаю, что это говорит, но я не знаю никакого другого способа сделать это. Как еще я могу получить эту сумму? Это небольшой подзапрос, который является частью более крупного запроса, поэтому мне нужно вернуть всего. Я мог бы, вероятно, использовать точку зрения или временную таблицу, но я хотел бы избегать этого, если это возможно.
Вы должны просто нужно удалите внутренний 'select', чтобы он стал' select sum (tb.cost - tb.NewCost * ta.Quantity) как BOMEffect из спецификации ... ' – Rhumborl