【问题标题】: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条记录在行。

标签: sql ms-access select sum inner-join


【解决方案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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    相关资源
    最近更新 更多