使用 CASE WHEN 获取特定年份的订单

Get orders for a particular year using CASE WHEN

我正在使用这个 order dataset 并尝试获取 2 列数据,一份是 1998 年的订单,另一份是 1996 年的订单,并在每个卖家的名字旁边。

我的 SQL 到目前为止是:

select
    salesperson.name,
    case when strftime('%Y', order_date) = 1998 then sum(orders.number) end as sales_in_1998,
    case when strftime('%Y', order_date) = 1996 then sum(orders.number) end as sales_in_1996
from salesperson
left join orders on orders.salesperson_id = salesperson.id
group by salesperson.name;

(抱歉没有 YEAR() 函数,因为我将它加载到 sqlite 中)

但是,我得到的所有内容都是 NULL。我做错了什么?

Here is my SQLfiddle 其中加载了数据。

  1. CASE 进入 SUM()
  2. 使用单引号进行字符串比较。

结果查询:

select sp.name,
       sum(case when strftime('%Y', o.order_date) = '1998' then o.number 
           end) as sales_in_1998,
       sum(case when strftime('%Y', o.order_date) = '1996' then o.number 
           end) as sales_in_1996
from salesperson sp left join
     orders o
     on o.salesperson_id = sp.id
group by sp.name;