sql 分类按月统计

我现在有一个表如下日期名称出售数量2009-9-1a102009-9-3b52009-10-1a502009-10-2b10现在我要得到如下的表名称9月10月a1050b... 我现在有一个表如下
日期 名称 出售数量
2009-9-1 a 10
2009-9-3 b 5
2009-10-1 a 50
2009-10-2 b 10

现在我要得到如下的表

名称 9月 10月
a 10 50
b 5 10
请问这样的SQL语句怎么写呢,
展开
 我来答
传说中的鹰王
2009-11-03 · TA获得超过1053个赞
知道小有建树答主
回答量:923
采纳率:87%
帮助的人:550万
展开全部
方法一:这种方法列名是固定的。
select 名称,
sum(case when substring(convert(varchar(7),日期,120),6,2)='09' then 出售数量 else 0 end) as '9月',
sum(case when substring(convert(varchar(7),日期,120),6,2)='10' then 出售数量 else 0 end) as '10月'
from 表
group by 名称

方法二:这种方法虽然麻烦一些,但是支持列名不确定的情况。
declare @sql varchar(2000)
declare @mon varchar(2)

set @sql = 'select 名称'
select @sql = @sql + ',sum(case mon when '''+mon+''' then 出售数量 end) ['+mon+'月]'
from (select distinct substring(convert(varchar(7),日期,120),6,2) mon from 表) as a
select @sql = @sql+' from 表 group by 名称'
exec(@sql)
汐日南莘
2015-11-13 · TA获得超过1.4万个赞
知道大有可为答主
回答量:1.6万
采纳率:45%
帮助的人:7609万
展开全部
sql 分类统计 可以使用 sum group by 统计每个分类的总和
比如统计每个月总销售额
id sell month
1 200 1
2 300 1
3 300 2
4 600 3
select month,sum(sell) from table group by month
结果
month sell
1 500
2 300
3 600
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
loveyurui
2009-11-03 · TA获得超过6557个赞
知道大有可为答主
回答量:2892
采纳率:33%
帮助的人:997万
展开全部
select 名称,
sum(case when substr(日期,6,1)=9 then 出售数量 else 0 end) as '9月',
sum(case when substr(日期,6,2)=10 then 出售数量 else 0 end) as '10月'
from table
group by 名称;

你试试吧 我用的是oracle 你如果是sql的就把substr改成substring
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
绵子03
2009-11-03 · TA获得超过670个赞
知道小有建树答主
回答量:223
采纳率:0%
帮助的人:405万
展开全部
SELECT t1.名称, t1.出售数量 as 9月, t2.出售数量 as 10月
FROM 表 as t1, 表 as t2
WHERE t1.名称=t2.名称 AND
extract(month from t1.日期)=9 AND
extract(month from t2.日期)=10;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a800768
2009-11-03 · TA获得超过1841个赞
知道大有可为答主
回答量:1928
采纳率:0%
帮助的人:1729万
展开全部
SELECT [名称],sum((1-abs(sign(DATEPART(MONTH,[日期])-9)))*[出售数量]) '9月',
sum((1-abs(sign(DATEPART(MONTH,[日期])-10)))*[出售数量]) '10月'
FROM 表名

GROUP BY [名称]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式