Sql 每天最后30天的收入总和

Sql 每天最后30天的收入总和,sql,Sql,我有一张简单的桌子 Date | Revenue 5/1 12 5/2 25 5/3 93 . . 11/15 47 我正在尝试编写一个返回两列的查询。第一列是日期,与原始表一样,逐日显示。第二列是30天收入,是原始表格中过去30天“收入”列的总和,以显示的日期结束。我们求和时有很多重叠。提前谢谢 您可以使用。例如 我有一个替代解决方案(假设您的表名为revenue\u table): 选择a.日期、金额(b.收入) 来自收入表a、收入表b 其中b.日期a.日

我有一张简单的桌子

 Date | Revenue
 5/1    12
 5/2    25
 5/3    93
 .
 .
 11/15  47
我正在尝试编写一个返回两列的查询。第一列是日期,与原始表一样,逐日显示。第二列是30天收入,是原始表格中过去30天“收入”列的总和,以显示的日期结束。我们求和时有很多重叠。提前谢谢

您可以使用。例如


我有一个替代解决方案(假设您的表名为
revenue\u table
):

选择a.日期、金额(b.收入)
来自收入表a、收入表b
其中b.日期a.日期-30
按a.日期分组;

您使用的是什么数据库?请在您的问题中包含您正在使用的DBMS的标记和您正在使用的SQL语句,这会导致“我们求和时有很多重叠”。谢谢。谢谢你阅读我的问题。我只对逻辑感兴趣,对确切的问题不感兴趣。我认为使用标准SQL中的任何东西都可以。我将尝试一下!非常感谢。你的逻辑对我帮助最大。我感谢你的帮助!
SELECT outer.date, (SELECT SUM(inner.revenue) 
                    FROM table inner 
                    WHERE inner.date > outer.date-30) AS thirtydayrevenue
FROM table outer
SELECT a.Date, SUM(b.Revenue)
FROM revenue_table a, revenue_table b
WHERE b.Date <= a.Date AND b.Date > a.Date - 30
GROUP BY a.Date;
SELECT table1.Date, table1.Revenue, Past30DayRevenue = SUM(table2.Revenue)
FROM    insert_your_table_name_here table1
        JOIN insert_your_table_name_here table2 ON DATEDIFF(day, table2.Date, table1.Date) BETWEEN 0 AND 29
GROUP BY table1.Date, table1.Revenue
ORDER BY table1.Date;