sql server 求每月销量

低调的感觉 2016-03-08 03:27:32
以下是数据源:
商品名称    销售日期     销售数量
---- -------- -----------
001 2016/1/1 2
001 2016/1/2 1
001 2016/1/5 3
002 2016/1/2 1
002 2016/1/3 5
001 2016/2/1 1
001 2016/2/3 6
003 2016/2/1 2
003 2016/2/2 2


以下是需要得到的结果:
名称   1月数量        2月数量
---- ----------- -----------
001 6 7
002 6 0
003 0 4


就是需要根据数据源,得到近两个月的销量
...全文
273 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
道素 2016-03-08
  • 打赏
  • 举报
回复
还有一种写法:

WITH a(商品名称,销售日期,销售数量) AS (

select '001','2016/1/1',2 UNION ALL
select '001','2016/1/2',1 UNION ALL
select '001','2016/1/5',3 UNION ALL
select '002','2016/1/2',1 UNION ALL
select '002','2016/1/3',5 UNION ALL
select '001','2016/2/1',1 UNION ALL
select '001','2016/2/3',6 UNION ALL
select '003','2016/2/1',2 UNION ALL
select '003','2016/2/2',2
	)

select   商品名称,y,sum([1]) as [1],sum([2]) as [2],sum([3]) as [3]
from (select * ,year(销售日期) as y,month(销售日期) as m from a) aa
pivot (sum(销售数量) for m in ([1],[2],[3])) b
GROUP BY 商品名称,y
顾西昂 2016-03-08
  • 打赏
  • 举报
回复

select 商品名称,
sum(case detepart(mm,销售日期)=1 THEN 销售数量 ELSE 0 END) as 1月数量,
sum(case detepart(mm,销售日期)=2 THEN 销售数量 ELSE 0 END) as 2月数量
from tab group by 商品名称
shoppo0505 2016-03-08
  • 打赏
  • 举报
回复
下面是统计的代码,行专列自己弄吧
select
tb.商品名称
, DATEPART(MONTH, 销售日期)
, SUM(销售数量)
from tb
group by 商品名称, DATEPART(MONTH, 销售日期)
Ginnnnnnnn 2016-03-08
  • 打赏
  • 举报
回复

SELECT 商品名称,
		SUM(CASE WHEN MONTH(销售日期) = 1 THEN 销售数量 ELSE 0 END) AS 1月销售额,
		       SUM(CASE WHEN MONTH(销售日期) = 2 THEN 销售数量 ELSE 0 END) AS 2月销售额
	FROM tb
		GROUP BY 商品名称
中国风 2016-03-08
  • 打赏
  • 举报
回复
如果有年数据时,最好加上年份分组如下:
SELECT 商品名称,YEAR(销售日期) AS 年份,SUM(CASE WHEN MONTH(销售日期)=1 THEN 销售数量 ELSE 0 END) AS [1月销售数量]
,SUM(CASE WHEN MONTH(销售日期)=2 THEN 销售数量 ELSE 0 END) AS [2月销售数量]
FROM TableName
GROUP BY 商品名称,YEAR(销售日期)

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧