我在 mysql 中有一个表,其中包含日期列、收入列以及当月每天产生的收入 我需要把它变成格式 date, '截至该日期的收入总和'
我可以用一个
select max(date) as date, sum(revenue) as total_revenue_to_date from table where dayofmonth(date)<=1
union
select max(date) as date, sum(revenue) as total_revenue_to_date from table where dayofmonth(date)<=2
.......
等,但想以更好的格式编写它。
有人有什么想法吗?
回答: 最短,最容易理解:
SELECT fulldate,
(SELECT SUM(margin) FROM fact_agg_margin_live_daily d2 WHERE d1.fulldate>=d2.fulldate) AS margin
FROM fact_agg_margin_live_daily d1
最佳答案
我做了一些测试,所以这是我的例子:
表名= Material 字段名=id_material
行:1、2、3、4、6、7、9(列 id_material)
使用的查询:
选择 id_material, (SELECT SUM(id_material) FROM materiales M2 WHERE M1.id_material>=M2.id_material) AS suma 来自 Material M1
预期结果:column1 为当前 id,column2 为当前 id 加上前一个的结果之和,是的,它有效。
您可以像这样将其更改为您当前的场景:
选择日期, (SELECT SUM(revenue) FROM table T2 WHERE T1.date >= T2.date) AS revenue_until_current_date 从表 T1
这将返回每个日期以及该日期之前的收入。如果每天存储这些行,它将每天返回当天的收入加上前一天的收入。
关于每行的行日期之前的时间段的Mysql总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16919144/