我正在尝试编写一个输出下表的查询:
|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 ......
答案 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)