有这样一张表: 姓名 日期 销售金额
张三 2007-8-20 800
张三 2007-8-25 100
李四 2007-8-22 1200
张三 2007-9-20 650
李四 2007-9-25 970
现在要做一条查询,把这个表格变成: 姓名 8月份 9月份
张三 900 650
李四 1200 970应该怎样做啊?
张三 2007-8-20 800
张三 2007-8-25 100
李四 2007-8-22 1200
张三 2007-9-20 650
李四 2007-9-25 970
现在要做一条查询,把这个表格变成: 姓名 8月份 9月份
张三 900 650
李四 1200 970应该怎样做啊?
go
create table tbtest(姓名 varchar(10),日期 datetime,销售金额 int)
insert into tbtest
select '张三','2007-8-20',800
union all select '张三','2007-8-25',100
union all select '李四','2007-8-22',1200
union all select '张三','2007-9-20',650
union all select '李四','2007-9-25',970declare @sql varchar(8000)
set @sql=''
select @sql=@sql+',sum(case when convert(char(7),日期,120)='''+日期+''' then 销售金额 else 0 end) as '''+日期+''''
from (select distinct convert(char(7),日期,120) 日期 from tbtest)t
order by 日期
exec('select 姓名'+@sql+' from tbtest group by 姓名')
/*
姓名 2007-08 2007-09
---------- ----------- -----------
李四 1200 970
张三
select 姓名,
sum(case when month(日期)=8 then 销售金额 else 0 end) [8月份],
sum(case when month(日期)=9 then 销售金额 else 0 end) [9月份]
from 表
group by 姓名