多组合条件分组汇总

MSSQL 数据库某表如下,其中 id 时关键字:

from

to

value

id

start_row

end_row

A

B

20

1


1

C

D

30

2


2

B

C

100

3


3

E

A

50

4


4

A

D

70

5

1

5

C

A

20

6

2

6

现在要先过滤出 start_row 和 end_row 都不为 null 的记录,再针对找到的每条记录进行计算,找到表中 id 在 本记录的 start_row 和 end_row 之间,且 from 或 to 等于本记录的 from 的那些记录,再对这些记录的 value 求和。

id

sumvals

5

140

6

150

编写SPL代码


 A

1

=mssql.query("select * from tb")

2

=A1.select(start_row && end_row)

3

=A2.new(id,A1.select(id>= A2.start_row && id<=A2.end_row && (from==A2.from || to==A2.from)).sum(value):sumvals)

A1:通过 JDBC 查询数据库。

A2:过滤出 start_row 和 end_row 都不为 null 的记录,即第 5 第 6 条。&& 表示逻辑与。

A3:根据 A2 新建二维表,第 1 个字段取自 id,第 2 个字段的计算方法是:找到 A1 中 id 在当前记录的 start_row 和 end_row 之间,且 from 或 to 等于当前记录的 from 的那些记录,对这些记录的 value 求和。

问题来源:https://stackoverflow.com/questions/78358979/sql-query-to-sum-some-values-from-preceeding-rows-depending-on-the-row-values