0

表 DateRangeTab (Fromdate, Todate, TotalValue) 有如下数据:

2010-01-01, 2011-01-01, 0
2010-01-01, 2012-01-01, 0

等(即很多日期范围在 TotalValue 列中都为 0)

我还有表 ValueTab (DateofValue, Value) ,其中包含以下数据:

2010-01-02, £25
2011-01-01, £45
2011-05-04, £65 

等(即许多不同的行,其中包含日期和每个日期的值)

我需要使用 ValueTab 表中的值的总和更新 DateRangeTab TotalValue 列,其中 DateofValue 位于 FromDate - Todate 范围内。

我尝试了以下方法:

Update DateRangeTab 
set TotalValue = a.Value
from (select sum(value) as Value 
     from ValueTab VT 
     join DateRangeTab DT 
     on VT.DateofValue between DT.startdate and DT.ToDate) a

但它在 DateRangeTab 的每一行中都设置了相同的总数。希望有人可以帮助或将我引导到另一个具有相关答案的帖子。

谢谢

4

2 回答 2

0

尝试

Update daterangetab 
set totalvalue=(select sum(value) 
                from valuetab 
                 where dateofvalue >= fromdate and dateofvalue <= todate 
group by dateofvalue);

这适用于postgresql

于 2013-08-19T23:18:10.960 回答
0

尝试这样的事情:

update DateRangeTab a 
set TotalValue = (select sum(value)
                from ValueTab 
                where DateofValue between a.Fromdate and a.Todate
                group by DateofValue)

我无法对此进行测试,因此它非常近似...尝试使其适应您的需求。

于 2013-08-19T23:19:05.300 回答