数据:年份 奖励额 类型
2009 1111 小孩
2009 2342 老人
2008 3000 成年人
2009 1111 小孩
2007 234 老人
2009 234 成年人
想要:将年份相同的类型相同的合并:如:
2009 有2个小孩.1个老人,1个成年人 ,想要结果是:年份 奖励额 类型
2009 2222 小孩 (注意:这个2009年有2个小孩,在这个合并,并且奖励额相加)
2009 2342 老人
2009 234 成年人
2008 3000 成年人
2007 234 老人
也就是重复的合并.奖励额相加...其他的不重复的不变.....
2009 1111 小孩
2009 2342 老人
2008 3000 成年人
2009 1111 小孩
2007 234 老人
2009 234 成年人
想要:将年份相同的类型相同的合并:如:
2009 有2个小孩.1个老人,1个成年人 ,想要结果是:年份 奖励额 类型
2009 2222 小孩 (注意:这个2009年有2个小孩,在这个合并,并且奖励额相加)
2009 2342 老人
2009 234 成年人
2008 3000 成年人
2007 234 老人
也就是重复的合并.奖励额相加...其他的不重复的不变.....
sum(奖励额)奖励额,
类型
from tb
group by 年份,类型
from tb
group by 年份,类型
sum(奖励额) as 奖励额,
类型
from tb
group by 年份,类型
from tb
group by 年份,类型
drop table tb
Go
Create table tb([年份] Datetime,[奖励额] int,[类型] nvarchar(3))
Insert tb
select '2009',1111,N'小孩' union all
select '2009',2342,N'老人' union all
select '2008',3000,N'成年人' union all
select '2009',1111,N'小孩' union all
select '2007',234,N'老人' union all
select '2009',234,N'成年人'
Go
select 年份,
sum(奖励额)奖励额,
类型
from tb
group by 年份,类型
/*
年份 奖励额 类型
----------------------- ----------- ----
2009-01-01 00:00:00.000 2222 小孩
2008-01-01 00:00:00.000 3000 成年人
2009-01-01 00:00:00.000 234 成年人
2007-01-01 00:00:00.000 234 老人
2009-01-01 00:00:00.000 2342 老人(5 個資料列受到影響)
*/
create table #PP
(
[year] int,
num int,
People varchar(20)
)
insert into #PP select 2009,1111,'小孩'
insert into #PP select 2009,2342,'老人'
insert into #PP select 2008,3000,'成年人'
insert into #PP select 2009,1111,'小孩'
insert into #PP select 2007,234,'老人'
insert into #PP select 2009,234,'成年人'select [year],sum(num) 奖励额 ,People
from #PP
group by [year],Peopleyear 奖励额 People
----------- ----------- --------------------
2008 3000 成年人
2009 234 成年人
2007 234 老人
2009 2342 老人
2009 2222 小孩(5 行受影响)
if object_id('[tb]') is not null drop table [tb]
create table [tb]([年份] int,[奖励额] int,[类型] varchar(6))
insert [tb]
select 2009,1111,'小孩' union all
select 2009,2342,'老人' union all
select 2008,3000,'成年人' union all
select 2009,1111,'小孩' union all
select 2007,234,'老人' union all
select 2009,234,'成年人'select * from [tb]select [年份],sum([奖励额]) as [奖励额] ,[类型]
from [tb]
group by [年份],[奖励额],[类型]
order by [年份],[类型] desc/*
年份 奖励额 类型
2007 234 老人
2008 3000 成年人
2009 2222 小孩
2009 2342 老人
2009 234 成年人*/这样?
from #PP
group by [year],People
order by [year] desc
year 奖励额 People
----------- ----------- --------------------
2009 234 成年人
2009 2342 老人
2009 2222 小孩
2008 3000 成年人
2007 234 老人(5 行受影响)