sql月度分组_Sql 按月度分组

博客内容展示了如何使用SQL进行按月度分组查询,提供了两种解决方案,分别适用于SQL Server的不同版本。示例中创建了一个名为tableA的表,并插入了数据,然后通过CASE语句和SUM函数结合MONTH函数或日期转换方法,根据Name字段分组并计算每个月的Amount总和。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Sql 按月份分组

Table A(Name,Amount,Time)

想要的结果

Name,Mon,Feb....

其中,Mon/Feb/...显示按照月份的Sum(Amount)

求大牛指导。

sql

分享到:

------解决方案--------------------

select name,[mon]=sum(case when month(time)=1 then amount else 0 end ),

[feb]=sum(case when month(time)=2 then amount else 0 end )..12个月自己补全

from a

group by name

------解决方案--------------------

--如果不是2008以上版本,用这个

select name,[mon]=sum(case when CONVERT(INT,SUBSTRING(CONVERT(VARCHAR(30),[time],23),6,2))=1 then amount else 0 end ),

[feb]=sum(case when CONVERT(INT,SUBSTRING(CONVERT(VARCHAR(30),[time],23),6,2))=2 then amount else 0 end )..12个月自己补全

from a

group by name

------解决方案--------------------

create table tableA(Name varchar(10),Amount numeric(12,2),[time] date)

insert into tableA

select 'Tommy',100,'2012-1-10'

union all select 'Tommy',101,'2012-2-11'

union all select 'Tommy',102,'2012-8-12'

union all select 'Tommy',103,'2012-4-13'

union all select 'Tommy',104,'2012-10-14'

union all select 'Jenny',105,'2012-6-15'

union all select 'Jenny',106,'2012-3-16'

union all select 'Jenny',107,'2012-8-17'

union all select 'Jenny',108,'2012-9-18'

union all select 'Jenny',109,'2012-5-19'

union all select 'Jenny',110,'2012-11-20'

union all select 'Jenny',111,'2012-12-21'

declare @groupField varchar(1000)

select @groupField=isnull(@groupField,'')+case when isnull(@groupField,'')='' then '' else ',' end+QUOTENAME(YM)

from (select distinct CONVERT(varchar(7),[time],120) as YM from tableA)t

declare @sql nvarchar(4000)

set @sql=N'select *

from

(select Name, CONVERT(varchar(7),[time],120) YM,sum(Amount) as Amount

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值