如何仅用SUM函数按TRX_NUMBER计算NETT总和生成NETT2列?
问题解答
此需求完全可行,你当前的SQL问题在于将nett字段加入了GROUP BY子句,导致SUM(nett)只会返回当前行的nett值(因为每一行的nett单独成组),无法实现按TRX_NUMBER汇总的效果。
正确的写法是使用窗口函数,通过SUM() OVER()按TRX_NUMBER分组计算总和,无需对整个结果集进行分组,也不需要CASE语句:
SELECT segment1 ,jenis_rcv ,gl_date ,trx_number ,nett ,SUM(nett) OVER (PARTITION BY trx_number) AS nett2 FROM SEMUA
这样就能保留原表的所有行,同时为每一行计算出对应TRX_NUMBER的nett字段总和,完全符合你的需求。
内容的提问来源于stack exchange,提问作者JenJenFenFen
相关产品推荐
相关产品推荐

