Sql 在以下情况下,使用CASE获取特定年份的订单:
我用这个,试图得到两列数据,一列是1998年的订单,另一列是1996年的订单,以及每个卖家的名字 到目前为止,我的SQL是:Sql 在以下情况下,使用CASE获取特定年份的订单:,sql,left-join,case-when,Sql,Left Join,Case When,我用这个,试图得到两列数据,一列是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.
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;
(很抱歉,自从我将其加载到sqlite后,没有YEAR()
函数)
然而,我只是得到了所有的空值。我做错了什么
将数据加载到其中
案例
位于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;
案例
位于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;
美好的谢谢我忘了STRFTIME返回字符串。另外,为了整理结果集,我在案例末尾添加了一个ELSE 0:)很好!谢谢我忘了STRFTIME返回字符串。另外,为了整理结果集,我在案例末尾添加了一个ELSE 0:)