一个表中日期范围之间的SQL SUM



我想要基于ProductIdDatesum成本。

我的日期格式是:YY/MM/DD,它是date。数据看起来像这样:

DateFrom     DateTo         Cost     ProductId
07/12/12    | 07/12/31 |    120,5   | 1 
01/12/12    | 11/12/31 |    220 5   | 1 
01/12/12    | 11/12/31 |    120,5   | 1 
08/12/12    | 08/12/31 |    140,5   | 2 
11/12/12    | 11/12/31 |    140,5   | 2 
11/12/12    | 11/12/31 |    140,5   | 2 

我想要得到的输出应该是这样的:

FirstDateFrom   LastDateTo   SumOfCostFromSameYear   ProductId
07/12/12       | 07/12/31   |   120,5              | 1  
01/12/12       | 11/12/31   |   341                | 1  
08/12/12       | 08/12/31   |   140,5              | 2  
11/12/12       | 11/12/31   |   281                | 2  

正如你所看到的,我希望在我的输出中有来自每个year的cots的总和。

我开始写一些sql:

SELECT DateFrom, DateTo, ProductId, SUM(cost) FROM CostOfSomething WHERE ...

但我不知道WHERE语句对于我的场景应该是什么样子

编辑:创建此表的脚本:

create table CostOfSomething(
Id NUMBER PRIMARY KEY,
DateTo DATE,
DateFrom DATE,
Cost NUMBER(6,2),
ProductId NUMBER REFERENCES product(ProductId)
);
select min(DateFrom) "FirstDateFrom"
, max(DateTo) "LastDateTo"
, sum(Cost) "SumOfCostFromSameYear"
, min(ProductId) "ProductId"
from CostOfSomething    
group by to_char(DateFrom, 'yy')
order by to_char(DateFrom, 'yy') -- you do not need to have order by

这是一个演示

最新更新