SQL 数据库 如何实现第一行字段A减字段B得到值C,然后再用C减去第二行字段B
现在是需要现第一行字段A减字段B得到值C,然后再用C减去第二行字段B
即这样的效果:
实现思路:
做一个累计变量:
这样我们就可以直接使用字段A减去累计字段B 就可以得到我们想要的效果了
SQL实现:
这个表作为temp1
第一步:将数据排序
SELECt
A,
B,
ROW_NUMBER() OVER(ORDER BY B DESC) AS rank
FROM temp1
得到如下结果表 TB_OP_TestOut :
第二步:表TB_OP_TestOut 自关联,关联条件A.rank>=B.rank
SELECt
A.A,
A.B,
SUM(B.B) AS CountB,
A.A-SUM(B.B) AS C
FROM TB_OP_TestOut A
LEFT JOIN TB_OP_TestOut B ON A.rank>=B.rank
GROUP BY
A.rank
详细步骤解释:
自关联数据之后:
根据Arank分组,求累计字段:
直接用A-CountB字段的结果 就是我们想要的效果了