2
我需要计算Quantity
列的值,其中Name = A
使用这个公式中的SQL服务器:SQL-Server。计算公式与子查询中聚合函数
A(Quantity) = (B*B1 + C*C1 + D*D1)/SUM(B1 + C1 + D1) + E
的样本数据:
Static Static Dynamic
Name ID Quantity -- Here are more columns, but doesn't matter
A 1 ? -- need to calculate this value
B 2 4
C 3 6
D 4 8
E 5 5
A1 6 -
B1 7 2
C1 8 3
D1 9 4
你有任何想法如何做它? Quantity
列中的所有值都是动态的,Name
和Id
列是静态的。
我认为像下面,但存在的问题是子查询不能在聚合函数中使用:
SELECT Name,
Id,
ISNULL(MAX(CASE WHEN f.Period = YEAR(GETDATE())*100 + 01 THEN
CASE WHEN Name = 'A' THEN
(SELECT Quantity FROM Cte WHERE Name = 'A') *
(SELECT Quantity FROM Cte WHERE Name = 'A1') +
(SELECT Quantity FROM Cte WHERE Name = 'B') *
(SELECT Quantity FROM Cte WHERE Name = 'B1')
...................
ELSE Quantity
END
END), 0) as Quantity
FROM tbl...
我得到了以下错误:
Cannot perform an aggregate function on an expression containing an aggregate or a subquery.
你有什么想法如何能我用聚合函数或任何其他方式来计算它的子查询?
派生表? – jarlh