SQL Server 2008 R2——PIVOT 行转列 以及聚合函数的选择

王朝学院·作者佚名  2016-05-25
窄屏简体版  字體: 小  |  中  |  大  |  超大  

SQL Server 2008 R2——PIVOT 行转列 以及聚合函数的选择==================================声明==================================

本文原创,转载在正文中显要的注明作者和出处,并保证文章的完整性。

未经作者同意请勿修改(包括本声明),保留法律追究的权利。

未经作者同意请勿用于学术性引用。

未经作者同意请勿用于商业出版、商业印刷、商业引用。

本文不定期修正完善,为保证内容正确,建议移步原文处阅读。

本文链接:http://www.cnblogs.com/wlsandwho/p/4423956.html

=======================================================================

看了好长时间的资料,总算是看懂了点。(另外怎样才能把右面的这个长毛的土豆去掉?----> 对,就是它!)

赶紧记录下来。

=======================================================================

表格和数据。(和http://www.cnblogs.com/wlsandwho/p/4416222.html的相同)

1 USE tempdb 2 GO 3 -------------------------------------------------------------------------- 4 IF OBJECT_ID('Student','U') IS NOT NULL 5 DROP TABLE Student 6 GO 7 8 CREATE TABLE Student 9 (10 StuID NVARCHAR(8) PRIMARY KEY,11 Name NVARCHAR(5),12 EntranceTime DATETIME13 )14 GO15 16 INSERT INTO Student(StuID,Name,EntranceTime) VALUES('20080001','Lily','2008-08-27')17 INSERT INTO Student(StuID,Name,EntranceTime) VALUES('20090002','Lucy','2009-08-26')18 INSERT INTO Student(StuID,Name,EntranceTime) VALUES('20070003','Jack','2007-08-28')19 GO20 --------------------------------------------------------------------------21 IF OBJECT_ID('SltCourse','U') IS NOT NULL22 DROP TABLE SltCourse23 GO24 25 CREATE TABLE SltCourse --SelectiveCourse26 (27 ID INT PRIMARY KEY IDENTITY(1,1),28 StuID NVARCHAR(8),29 CourseName NVARCHAR(10),30 Score INT 31 )32 GO33 34 INSERT INTO SltCourse(StuID,CourseName,Score) VALUES('20070003','电脑维修',90)35 INSERT INTO SltCourse(StuID,CourseName,Score) VALUES('20070003','剪纸',80)36 INSERT INTO SltCourse(StuID,CourseName,Score) VALUES('20070003','市场策划',95)37 INSERT INTO SltCourse(StuID,CourseName,Score) VALUES('20070003','信息检索',100)38 39 INSERT INTO SltCourse(StuID,CourseName,Score) VALUES('20080001','插花',99)40 INSERT INTO SltCourse(StuID,CourseName,Score) VALUES('20080001','剪纸',96)41 INSERT INTO SltCourse(StuID,CourseName,Score) VALUES('20080001','刺绣',92)42 43 INSERT INTO SltCourse(StuID,CourseName,Score) VALUES('20090002','插花',98)44 GO

查看一下

1 SELECT s.StuID,s.Name,s.EntranceTime,sc.CourseName,sc.Score FROM Student s,SltCourse sc WHERE s.stuid=sc.stuid2 GO

=======================================================================

现在来看这个表格,前三列有很多数据是重复的,而且也不便于阅读。之前使用了row_number函数,这里使用下别的——PIVOT来实现一个行转列。

预期效果。

=======================================================================

静态版。这需要预知要转换成列名的数据。

1 WITH ReportCard 2 AS(3 SELECT s.StuID,s.Name,s.EntranceTime,sc.CourseName,sc.Score FROM Student s,SltCourse sc WHERE s.stuid=sc.stuid4 )5 SELECT * FROM ReportCard PIVOT(MAX(Score) FOR CourseName IN([电脑维修],[剪纸],[市场策划],[信息检索],[插花],[刺绣]) ) AS T6 GO

结果。

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

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航