SQL如何通过不同的id进行条件求和?

Osc*_*mez 6 sql oracle select aggregate-functions

假设您有结果集,例如:

DATE          ID    cost    
---------------------------------------
 01/01/2011    1     10      
 01/01/2011    1     10      
 01/01/2011    2     10      
 01/01/2011    2     10      
Run Code Online (Sandbox Code Playgroud)

我想要一种方法来对成本值进行求和,但对于每个不同的ID只需要一次,这样当我按日期分组时,我得到的结果如

DATE            cost
Run Code Online (Sandbox Code Playgroud)
01/01/2011         20
Run Code Online (Sandbox Code Playgroud)

我先尝试过类似的东西

    sum(distinct cost) 
Run Code Online (Sandbox Code Playgroud)

但是诅咒只返回10我也尝试过:

sum(case when distinct id then cost else 0 end)
Run Code Online (Sandbox Code Playgroud)

但这不是一个功能性查询.

Adr*_*iro 17

我将假设相同的ID在同一天总是具有相同的成本.我还假设您的RDBMS支持派生表.在这种情况下,这就是你想要的:

select date, sum(cost)
from 
  (select distinct date, id, cost from YourTable)
group by date
Run Code Online (Sandbox Code Playgroud)

更新

Oracle派生表不需要别名.