使用 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 其中加载了数据。
CASE
进入 SUM()
。
- 使用单引号进行字符串比较。
结果查询:
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;
我正在使用这个 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 其中加载了数据。
CASE
进入SUM()
。- 使用单引号进行字符串比较。
结果查询:
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;