DECLARE @orderTable TABLE
(
orderNO INT IDENTITY(1,1),
Qty NUMERIC(10,3),
agentId int,
parentid INT
)
INSERT INTO @orderTable (Qty, agentId, parentid )
VALUES (9, 1, 0),
(2, 2, 1),
(3, 3, 1)
SELECT * FROM @orderTable
orderNO Qty agentId parentid
1 9.000 1 0
2 2.000 2 1
3 3.000 3 1
在上表中,我想根据父母总结数量。总和也应该有父订单数量。
希望在不使用union的情况下在单个查询中实现此目的。
输出:
parentId qty
1 14
答案 0 :(得分:1)
此查询:
SELECT o.agentId as parentId, t.childrenSum + SUM(Qty) OVER() AS qty
FROM @orderTable AS o
OUTER APPLY (
SELECT SUM(Qty) AS childrenSum
FROM @orderTable
WHERE parentid = o.agentId
) t
WHERE o.parentid = 0
生成此输出:
parentId qty
----------------
1 14.000
WHERE
条款:
WHERE o.parentid = 0
可能会选择所有父记录,而OUTER APPLY
子查询会计算每个父母的所有子项的数量总和。