根据季度定义将月度值相加

Posted

技术标签:

【中文标题】根据季度定义将月度值相加【英文标题】:Add up monthly values base on definition on quarter 【发布时间】:2016-04-16 03:58:28 【问题描述】:

尝试根据哪个月属于哪个季度的定义来累加月度值(因此可以更新定义):

我正在尝试使用inner join来实现但是失败了:

SELECT qr, sum(price)
INTO Table3
FROM Table1
INNER JOIN Table2
on Table1.mth = Table2.mth
INNER JOIN Table3
on Table2.qr = Table3.qr

我也不确定 Table1 (qr) 中的附加列是否会使事情变得更容易?

【问题讨论】:

您需要添加GROUP BY qr 【参考方案1】:

如果您的 table3 已经有这 4 行开始,并且您只想更新 table3 中的价格以反映每个季度的价格,您可以使用此查询:

UPDATE Table3 T3, 
  (SELECT T2.qr,sum(T1.price) as quarterly_price
   FROM Table1 T1
   INNER JOIN Table2 T2 ON T1.mth = T2.mth
   GROUP BY T2.qr) AS Result
SET T3.price = Result.quarterly_price
WHERE T3.qr = Result.qr;

sqlfiddle to Update Table3

如果 table3 没有这 4 行并且您想插入它们,请使用以下查询:

INSERT INTO Table3
  SELECT T2.qr,sum(T1.price) as quarterly_price
   FROM Table1 T1
   INNER JOIN Table2 T2 ON T1.mth = T2.mth
   GROUP BY T2.qr;

sqlfiddle to Insert into Table3

编辑: 我对您的代码进行了一些修改,这在 Access 的查询中运行良好:

SELECT Table2.qr,sum(Table1.price) as Price_new
INTO Table3
FROM Table1
INNER JOIN Table2 ON Table1.mth = Table2.mth
GROUP BY Table2.qr;

【讨论】:

谢谢 Tin,我尝试使用 sqlfiddle 链接运行代码并且工作正常,但是当我在 Access 中尝试查询时它不起作用,这完全不同吗? 我不知道使用什么样的 SQL 访问......也许语法上存在细微差别

以上是关于根据季度定义将月度值相加的主要内容,如果未能解决你的问题,请参考以下文章

如何在熊猫中将月度数据转换为季度

将月度数据与季度数据合并?

时间序列,将月度数据更改为季度

MySQL两表字段相加减,主要是相减,sql语句怎么写

SQL中怎么实现时间相加。比如 我要实现 从今天的日期加30天为到期日。

将两个指针的值相加并将相加保存到另一个指针中