根据条件选择相同列的总和

Ale*_*ina 1 sql sum

我有一个像这样的SQL表:

>id|   date   |payed  |amount  
>1 |2015-02-02|1|5  
>2 |2015-02-02|0|2  
>3 |2015-02-02|1|4  
>4 |2015-03-02|1|1 
Run Code Online (Sandbox Code Playgroud)

付费列可以是以太0或1.如何根据日期返回"付费"(0和1)的每个选项的"金额"总和?

SELECT (sum of amount for both options of payed) FROM events WHERE date = ?
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,对于日期"2015-02-02",我应该得到2和9.

非常感谢你

Bil*_*egg 6

如果您愿意,可以单独使用GROUP BY,但如果希望结果为同一行的2列,也可以使用SUM(CASE).

SELECT date, 
       SUM(case when payed = 1 then amount else 0 end) as PaidAmount,
       SUM(case when payed = 0 then amount else 0 end) as UnPaidAmount
FROM events 
GROUP BY DATE;
Run Code Online (Sandbox Code Playgroud)