小本领实现SQL Server生成数据透视表[MSSQL防范]
本文“小本领实现SQL Server生成数据透视表[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
数据透视表是解析数据的一种办法,在Excel中就包含了强盛的数据透视功效.数据透视是什么样的呢?给个例子大概更简单理解.假定有一张数据表:
贩卖人员 书籍 销量
----------------------------------------
小王 Excel教材 10
小李 Excel教材 15
小王 Word教材 8
小李 Excel教材 7
小王 Excel教材 9
小李 Excel教材 2
小王 Word教材 3
小李 Excel教材 5
一种数据透视的办法是统计每个贩卖人员对每种书籍的销量 ,后果以下
----------------------------------------------------------------
Excel教材 Word教材 总计
---------------------------------------------- -----------------
小王 29 0 29
小李 19 11 30
各位看懂得了吗?这是最简单的一种数据透视了,假若有必要也可以有多级分组.
好了,那在Sql Server中若何视现数据透视的功效呢?我是Sql Server的初学者,看了网上的一些例子,结合自己的理解写了下面这些Sql语句.
生成底子数据的代码
- Create table s(
- [name] nvarchar(50),
- book nvarchar(50),
- saledNumber int
- )
- insert into s ([name],book,saledNumber) values('小王','Excel教材',10);
- insert into s ([name],book,saledNumber)values('小李','Excel教材',15);
- insert into s ([name],book,saledNumber)values('小王','Word教材',8);
- insert into s ([name],book,saledNumber)values('小李','Excel教材',7);
- insert into s ([name],book,saledNumber)values('小王','Excel教材',9);
- insert into s ([name],book,saledNumber)values('小李','Excel教材',2);
- insert into s ([name],book,saledNumber)values('小王','Word教材',3);
- insert into s ([name],book,saledNumber)values('小李','Excel教材',5);
生成数据透视表
- set @sql = 'SELECT [name], '
- select @sql = @sql + 'sum(case book when '+quotename(book,'''')+' then saledNumber else 0 end) as ' + quotename(book)+','
- from s group by book
- select @sql = left(@sql,len(@sql)-1)
- select @sql = @sql + ', sum(saledNumber) as [sum] from s group by [name]'
- select @sql
- exec(@sql)
上面的查询语句首先是拼接了一条"Sql语句",它的终究后果为:
- SELECT [name], sum(case book when 'Excel教材' then saledNumber else 0 end)
- as [Excel教材],sum(case book when 'Word教材' then saledNumber else 0 end)
- as [Word教材], sum(saledNumber) as [sum] from s group by [name]
当然,假如表中的数据差别,那么这生成的Sql语句也是差别的.最后它调用了Sql Server的系统存储历程Exec来履行这条语句.截个图吧.
这就是在Sql Server中生成数据透视表的实现,其实它的核心也就是上面拼接成的那条Sql语句.更复杂的透视方法,比方多级透视,也是在这个底子上的实现的.
原文标题:Sql Server 生成数据透视表
链接:http://www.cnblogs.com/shangfc/archive/2010/09/14/1826307.html
以上是“小本领实现SQL Server生成数据透视表[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |