SQL从另一个表的SUM查询中更新日期范围表

时间:2013-08-19 23:11:15

标签: sql

表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表中的Sum of Value更新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的每一行中放置相同的总数。 希望有人可以帮助或指导我到另一个相关答案的帖子。

由于

2 个答案:

答案 0 :(得分:0)

尝试

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

这适用于postgresql

答案 1 :(得分:0)

尝试这样的事情:

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

我无法对此进行测试,因此它非常接近......尝试并根据您的需要进行调整。