建站学 - 轻松建站从此开始!

建站学-个人建站指南,网页制作,网站设计,网站制作教程

当前位置: 建站学 > 数据库 > MSSQL Server教程 >

Sql Server 生成数据透视表

时间:2010-09-15 01:06来源: 作者: 点击:
数据透视表是分析数据的一种方法,在Excel中就包含了强大的数据透视功能。数据透视是什么样的呢?给个例子可能更容易理解。

数据透视表是分析数据的一种方法,在Excel中就包含了强大的数据透视功能。数据透视是什么样的呢?给个例子可能更容易理解。假设有一张数据表:

     销售人员 书籍 销量

----------------------------------------

小王 Excel教材   10

小李 Excel教材 15

 小王 Word教材 8

小李 Excel教材 7

小王 Excel教材   9

小李 Excel教材 2

 小王 Word教材 3

小李 Excel教材

一种数据透视的方法是统计每个销售人员对每种书籍的销量 ,结果如下

----------------------------------------------------------------

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 endas [Excel教材],sum(case  book when 'Word教材' then saledNumber else 0 endas [Word教材]sum(saledNumber) as [sum] from s group by [name]

 

当然,如果表中的数据不同,那么这生成的Sql语句也是不同的。最后它调用了Sql Server的系统存储过程Exec来执行这条语句。截个图吧。

 

这就是在Sql Server中生成数据透视表的实现,其实它的核心也就是上面拼接成的那条Sql语句。更复杂的透视方式,比如多级透视,也是在这个基础上的实现的。

(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片