0

我想在 AMDP 方法中用纯 SQL 语句来解决这个问题,我可以在 ABAP 中轻松解决这个问题,甚至在使用循环的 AMDP 方法中,但正如我所说,我想用 SQL 语句来解决这个问题,而不使用任何类型的循环。

请看一下这张图片:

样本

我有 2 列,第一列命名为D,第二列命名为E

D列是 SELECT SUM 的结果,但E是计算列,它应该如下工作:

  • 第一行两列相等E1 = D1
  • 在第二行中,E2 = E1 + D2
  • 第三行,E3 = E2 + D3
  • 第四行,E4 = E3 + D4
  • 等等。

就是这样了。是否可以用纯 SQL 语句来解决这个问题?

4

1 回答 1

0

将 SUM 放在子查询中,然后从该子查询中进行选择以及行号。将其插入临时表。然后从该临时表中选择并根据行号连接到同一个表,查找前一行。

SELECT D, ROW_NUMBER() AS ROW_NUM
INTO #TempTable
FROM (SELECT SUM() AS D FROM table) a

SELECT
    t1.D
    ,CASE
        t2.D IS NULL THEN t1.D
        ELSE t2.D + t1.D AS E
FROM #TempTable t1
    LEFT JOIN #TempTable t2 ON t1.ROW_NUM = t2.ROW_NUM + 1
于 2021-10-18T21:31:41.000 回答