我有一个问题,我在一侧(a)上有大量值,并且需要在另一侧(x)上将它们求和为单个值。没有逻辑分组可以得出总值(x)
在(a)侧,有(10000)个项目需要在(z)侧求和为单个值。求和(z)并不需要(a)边的所有值
(a) (z)
123. 2
321. 19
234. 100
122
1
23
1
19
77
预期输出:
(a) 1, 1. = (z) 2
(a) 19. = (z) 19
(a) 23, 77. = (z) 100
求和(a)等于(z)中的值
我当前的代码按日期分组,但由于我没有预定义的日期范围,因此现在无法使用。
当前代码:
Select * From
(
Select sum(amount), date
From (a)
Group by date
) a
Inner join
(
Select amount,date
From (z)
) b on a.date = b.date
Where a.Amount - b.Amount = 0
答案 0 :(得分:0)
这听起来像是自我加入:
select z.z, a1.amount, a2.amount
from z z left join
(a a1 left join
a a2
on a1.amount < a2.amount
)
on z.amount = a1.amount + coalesce(a2.amount, 0);