SQL查询中的增量天数

时间:2013-11-22 19:31:03

标签: sql sqlite date increment

我正在尝试编写一个输出下表的查询:

|Day_0_Revenue|Day_1_Revenue|Day_2_Revenue|....|Day_90_Revenue|

数据如下表所示。每天都有多个值,我想总结每天的收入。第0天是11/1。

|Date|Revenue|
11/1    5
11/2    3
11/3    5
11/3    7
11/4    8
11/5    8
11/5    12
11/6    7

我相信如果我想要的表是垂直的,这很简单。我想要水平输出的原因是因为我将垂直填充表与其他日期。我的主要问题是如何在不编写非常长的SELECT子句的情况下增加日值?我不确定我是否可以写一个类似Day + 1的循环直到Day = 90 ......

1 个答案:

答案 0 :(得分:0)

仅在SQLite中就无法做到这一点。

最简单的方法是使用GROUP BY day创建一个垂直方向的表,然后在显示它们时重新排序单元格。

如果您真的必须从数据库中获取水平方向的表,则必须动态创建查询:

SELECT (SELECT SUM(Revenue) FROM MyTable WHERE Date = '11/1') AS Day_0_Revenue,
       (SELECT SUM(Revenue) FROM MyTable WHERE Date = '11/2') AS Day_1_Revenue,
       (SELECT SUM(Revenue) FROM MyTable WHERE Date = '11/3') AS Day_2_Revenue,
       ...

您必须使用用于访问数据库的任何编程语言来执行此操作:

sql = "SELECT"
for i in range(90):
    sql += " (SELECT SUM(Revenue) FROM MyTable" +
           " WHERE Date = '%s') AS Day_%d_Revenue," % (dates[i], i)
sql = sql[:-1] # remove last comma
cursor = db.execute(sql)