我有3列(id,date,amount)并试图计算第4列(calculated\u列)。
如何创建sql查询以执行以下操作:
需要计算的方法是查看id(例如,1)并查看该月的所有相同id(例如,对于第一次发生-9月1日,应将其计算为5,对于第二次发生-应为5+6=11->从该月初开始的所有金额,包括该金额)。
然后在下个月(10月)-它将找到id=1的第一个匹配项,并将3存储在计算列中,对于10月的第二个id=1,它将从该月初开始对同一id进行求和(3+2=5)
我有3列(id,date,amount)并试图计算第4列(calculated\u列)。
如何创建sql查询以执行以下操作:
需要计算的方法是查看id(例如,1)并查看该月的所有相同id(例如,对于第一次发生-9月1日,应将其计算为5,对于第二次发生-应为5+6=11->从该月初开始的所有金额,包括该金额)。
然后在下个月(10月)-它将找到id=1的第一个匹配项,并将3存储在计算列中,对于10月的第二个id=1,它将从该月初开始对同一id进行求和(3+2=5)
4条答案
按热度按时间pokxtpni1#
以下是针对oracle的解决方案。因为您没有给表名,所以我将其命名为my_table,请将其更改为真实名称
wi3ka0sx2#
如果您的版本支持窗口功能(如mysql 8以上)
olqngx593#
在oracle和mysql 8+中,可以使用窗口函数。相应的日期算法各不相同,但想法如下:
外部
case
就是将值放在结果集的相应行上。如果月份中的所有行都具有相同的值,则代码会更简单。ql3eal8s4#
假设我理解正确,我建议使用一个相关的子查询,例如:
(更改表名)
table1
以适合您的数据)