在一列内求和

Posted

技术标签:

【中文标题】在一列内求和【英文标题】:Sum within a column 【发布时间】:2016-06-03 23:12:51 【问题描述】:

我不明白这一点,想知道是否有人可以帮助我解决这个问题。

TLB_UKKEL 包含气候记录

Date    | TGem | TEqui 
1/1/2016, 10.1 , 9.3 
2/1/2016, 11.3 , 9.8 
3/1/2016, 15.3 , X
...

TEqui 是:(0.6*TGem + 0.3* TGem from de day before + 0.1 * TGem from two day's before) 的总和。

前一天我可以用INNER JOIN 回电。但是我怎样才能把它们加起来呢?

【问题讨论】:

这适用于哪个 DBMS? 如果没有前一天会怎样? @ypercubeᵀᴹ 适用于 ms Access 数据库。 @Juan Carlos Oropeza只有前2个没有前一天的,其他3000条记录在行。 【参考方案1】:

你可以像这样使用左连接:

SELECT t.Date,T.TGem,
       (T.TGEM*0.6)+(coalesce(S.TGem,0)*0.3)+(coalesce(F.TGem,0)*0.1) as TEqui
FROM TLB_UKKEL t
LEFT OUTER JOIN TLB_UKKEL s ON(t.date = s.date+1)
LEFT OUTER JOIN TLB_UKKEL f ON(t.date = f.date+2)

您没有指定您的 DBMS,所以我使用了 coalesce.. 并非所有 DBMS 都支持,因此您可能必须将其更改为 NVL 或 isnull 或其他内容。

如果先前或 2 天前不存在,则它将这一天的总和为 0 。(再次......不知道这是否是你想要的,因为你的解释缺少一些细节)

【讨论】:

它在 ACCESS 数据库中。只是一个普通的本地数据库。只有前 2 个日期不存在。所以我的结果可能是 0。【参考方案2】:

谢谢,

我试过了。但它不起作用。

如果我这样做:

SELECT t.Datum,T.TGem, (T.TGem*0.6)+(F.TGem * 0.4) as QR_Tequi FROM Gegevens1 t LEFT OUTER JOIN Gegevens1 f ON (t.Datum = f.Datum+1)

如果我使用上面的代码,一切正常。如果我使用第二个 LEFT OUTER JOIN,我会收到语法错误 3075。

【讨论】:

以上是关于在一列内求和的主要内容,如果未能解决你的问题,请参考以下文章

颤振让孩子在列内匹配另一个孩子的宽度

iview 中table列 一列显示多个数据(后台返回数组显示在列内)

使用一列内的数据进行非配对t检验

老男孩教育每日一题-第92天-显示出打印第二列为oldboy行的第一列内内容

sum()函数——MATLAB

excel多列合并成一列: 如1 2 3 合并成123在一列里面用逗号隔开