sql里面根据月份分组显示,急!!!

如图急
2025-02-23 20:32:45
推荐回答(3个)
回答1:

问题一:
SELECT 商品名称,SUM(case when month(销售日期)=1 then 销售数量 else 0 end) 1月,
SUM(case when month(销售日期)=2 then 销售数量 else 0 end) 2月,
SUM(case when month(销售日期)=3 then 销售数量 else 0 end) 3月,
SUM(case when month(销售日期)=4 then 销售数量 else 0 end) 4月,
SUM(case when month(销售日期)=5 then 销售数量 else 0 end) 5月,
SUM(case when month(销售日期)=6 then 销售数量 else 0 end) 6月,
SUM(case when month(销售日期)=7 then 销售数量 else 0 end) 7月
  FROM 表一
   group by 商品名称
   
   问题二:
CREATE PROC P1 AS
   SELECT 商品名称,SUM(case when month(销售日期)=1 then 销售数量 else 0 end) 1月,
SUM(case when month(销售日期)=2 then 销售数量 else 0 end) 2月,
SUM(case when month(销售日期)=3 then 销售数量 else 0 end) 3月,
SUM(case when month(销售日期)=4 then 销售数量 else 0 end) 4月,
SUM(case when month(销售日期)=5 then 销售数量 else 0 end) 5月,
SUM(case when month(销售日期)=6 then 销售数量 else 0 end) 6月,
SUM(case when month(销售日期)=7 then 销售数量 else 0 end) 7月
  FROM 表一
   group by 商品名称

回答2:

不知道你用的是什么数据库,这个查询语句是oracle数据的:select 商品名称,sum(a) "1月",sum(b) "2月",sum(c) "3月",sum(d) "4月",sum(e) "5月",sum(f) "6月",sum(g) "7月" from(
select 商品名称,
decode(substr(to_char(销售日期,'yyyymmdd') ,5,2),'01',销售数量,0) a,
decode(substr(to_char(销售日期,'yyyymmdd') ,5,2),'02',销售数量,0) b,
decode(substr(to_char(销售日期,'yyyymmdd') ,5,2),'03',销售数量,0) c,
decode(substr(to_char(销售日期,'yyyymmdd') ,5,2),'04',销售数量,0) d,
decode(substr(to_char(销售日期,'yyyymmdd') ,5,2),'05',销售数量,0) e,
decode(substr(to_char(销售日期,'yyyymmdd') ,5,2),'06',销售数量,0) f,
decode(substr(to_char(销售日期,'yyyymmdd') ,5,2),'07',销售数量,0) g
from 表1
)
group by 商品名称
order by 商品名称

这只是个查询语句,如果存储过程的话,在存储过程中通过输出游标把他展现出来就行
--以游标输出参数 rcur out sys_refcursor

回答3:

select 商品名称,
sum(case when 销售日期 >= '2009-1-1' and 销售日期 < '2009-2-1'  then 销售数量 else 0 end) as '1月',
sum(case when 销售日期 >= '2009-2-1' and 销售日期 < '2009-3-1'  then 销售数量 else 0 end) as '2月',
...
from 表名 group by 商品名称