如果在SQLite中存在... else子句

时间:2016-06-14 06:51:59

标签: sql sqlite

我有一个数据库,需要从中提取一些数据,以便在python脚本中使用。我是sql的新手,只知道基础知识 这就是我想要做的事情:

if exists (
select date, sum(amount) 
from transactions 
where category = 'Food' 
group by date
) 
else 
select date, 0

对于transaction表中的所有日期,我想获得 Food 类别的日期总和(金额)。如果没有与 Food 类别的交易,我想获得 date 0 (因为 sum(amount)那天食物是0)。

我目前的代码是

select date, sum(amount) 
from transactions 
where category = 'Food' 
group by date

但是对于没有任何 Food 交易的日期,它不包含 date 0 行。

我应该如何重写它以使其有效?

我已经阅读了this个问题,但答案是布尔数据专有,没有提供足够的细节而无法推广。

1 个答案:

答案 0 :(得分:1)

您的问题并不清楚您希望获得哪些日期0:您不能只列出数据中没有的所有日期,数量无限!但是,我想您的意思是在交易的那些日期获得date, 0,但没有一个具有类别'Food'。在这种情况下,您可以这样做:

select date, sum(case when category = 'Food' then amount else 0 end)
from transactions
group by date