我有一表tbdata ,字段有
TLname (nvarchar),TLdate (datetime),TLsum(decimal)分别为名称,写入时间 和数量
一年后运行下来,现在要根据tlname 来分组汇总tlsum ,并且要求按月份进行统计,从一月到12月。如何写呢?
TLname (nvarchar),TLdate (datetime),TLsum(decimal)分别为名称,写入时间 和数量
一年后运行下来,现在要根据tlname 来分组汇总tlsum ,并且要求按月份进行统计,从一月到12月。如何写呢?
解决方案 »
- 在百万行数据量下,这个简单的语句运行不了
- 急!!菜鸟求助SQL数据库备份和还原问题
- win2000系统中如何配置ODBC 来连接 winxp 上的SQL SERVER 2000
- 事务日志大家是如何处理的
- ☆☆超级难题!^_^如何sum 字符串。☆☆ 2
- 如何 计算表里去掉重复的数
- 升级SP3时 总是提示SQL是评估版 无法升级, 我下载了多个SQL正式版,在WIN2000,WIN2003 都出同样提示.
- sql2000能否通过企业管理器连接上另一台机的sql2005并且做复制?
- 这样的存储过程怎么写???谢谢
- 求教!求教!求教!
- . 不显示删除回复 显示所有回复 显示星级回复 显示得分回复 收藏 偶把network service 改为local service 没成功!结果换不回来了!
- 创建数据库失败
from tbdata
group by TLname,MONTH(TLdate)
Insert tbdata
select '第一名','2012-01-01',100 union all
select '第一名','2012-02-01',600 union all
select '第二名','2012-03-01',500 union all
select '第二名','2012-03-01',400 union all
select '第三名','2012-04-01',200 union all
select '第四名','2012-05-01',300select TLname,sum(TLsum) as 数量,month(TLdate) as 月份 from tbdata group by TLname,month(TLdate) order by TLnameTLname 数量 月份
-------- ------------ -----------
第一名 100 1
第一名 600 2
第三名 200 4
第二名 900 3
第四名 300 5(5 行受影响)
TLname 年份 1月 2月........12月还是TLNAME 年 月 数量
Insert tbdata
select '张三','2012-01-01',100 union all
select '李四','2012-02-01',600 union all
select '张三','2012-03-01',500 union all
select '李四','2012-03-01',400 union all
select '李四','2012-04-01',200 union all
select '张三','2012-05-01',300 union all
select '张三','2013-01-01',100 union all
select '李四','2013-02-01',200 union all
select '张三','2013-03-01',200 union all
select '李四','2013-03-01',700 union all
select '李四','2013-04-01',900 union all
select '张三','2013-05-01',300 select year(tldate) as 年份,TLname
,[1]=sum(case when month(tldate)=1 then tlsum else 0 end)
,[2]=sum(case when month(tldate)=2 then tlsum else 0 end)
,[3]=sum(case when month(tldate)=3 then tlsum else 0 end)
,[4]=sum(case when month(tldate)=4 then tlsum else 0 end)
,[5]=sum(case when month(tldate)=5 then tlsum else 0 end)
,[6]=sum(case when month(tldate)=6 then tlsum else 0 end)
,[7]=sum(case when month(tldate)=7 then tlsum else 0 end)
,[8]=sum(case when month(tldate)=8 then tlsum else 0 end)
,[9]=sum(case when month(tldate)=9 then tlsum else 0 end)
,[10]=sum(case when month(tldate)=10 then tlsum else 0 end)
,[11]=sum(case when month(tldate)=11 then tlsum else 0 end)
,[12]=sum(case when month(tldate)=12 then tlsum else 0 end)
from tbdata
group by year(tldate),TLname
楼主是想要这样的结果么?
类似:
select TLname,convert(varchar(7),TLdate,120),sum(TLsum) from tbdata group by TLname,convert(varchar(7),TLdate,120)
(
tlname nvarchar(50),
tldate datetime,
tlsum decimal(18,2)
)insert into #tbdata(tlname,tldate,tlsum)
select '张三','2012-06-02','8' union all
select '张三','2012-09-01','10' union all
select '李四','2012-08-01','9' union all
select '王五','2012-08-01','8' union all
select '张三','2012-07-01','6' union all
select '张三','2012-06-01','5' union all
select '李四','2012-06-01','5' select tlname,tldate,tlsum from #tbdatadeclare @i int
set @i=1
while @i<=12
begin
select @i as 月份,tlname,sum(tlsum) as tlsum from #tbdata where @i=month(tldate) group by tlname
set @i=@i+1
enddrop table #tbdata