经典行转列例子
来源:互联网 发布:mysql官方下载教程 编辑:程序博客网 时间:2024/05/19 01:08
/*******************************************************************************
*课程表:Course
********************************************************************************/
CREATE TABLE #Course ( CourseName VARCHAR(10) );
INSERT INTO #Course
( CourseName )
VALUES ( '语文' ),
( '数学' ),
( '英语' )
SELECT *
FROM #Course
/*******************************************************************************
*学生成绩表:Score
********************************************************************************/
CREATE TABLE #Score
(
StudentName VARCHAR(10) ,
CourseName VARCHAR(10) ,
Score INT
);
INSERT INTO #Score
( StudentName, CourseName, Score )
VALUES ( '小红', '语文', 76 ),
( '小红', '数学', 85 ),
( '小红', '英语', 55 ),
( '小李', '语文', 90 ),
( '小李', '英语', 74 ),
( '小林', '语文', 87 ),
( '小林', '数学', 90 )
SELECT *
FROM #Score
/*******************************************************************************
*组织所有的课程
********************************************************************************/
DECLARE @CourseName VARCHAR(200) = ''
DECLARE @SelectSQL NVARCHAR(2000)
DECLARE @sql NVARCHAR(2000)
SELECT @CourseName = @CourseName + '[' + CourseName + '],'
FROM #Course
SET @CourseName = LEFT(@CourseName, LEN(@CourseName) - 1)
/*******************************************************************************
*行转列操作
********************************************************************************/
SET @SelectSQL = 'SELECT pvt.*
FROM
(
SELECT StudentName, CourseName, Score FROM #Score
) p
PIVOT( SUM(Score) For CourseName in ({0})) AS pvt'
SET @SelectSQL = REPLACE(@SelectSQL, '{0}', @CourseName)
EXEC sp_executesql @SelectSQL
/*总分*/
SET @sql = ' SELECT m.* , n.total
FROM
(
SELECT * FROM
(
SELECT * FROM #Score
) p
PIVOT (SUM(Score) FOR CourseName in ('+ @CourseName + ')) b
) m ,
(
SELECT StudentName,sum(Score) AS total from #Score
GROUP BY StudentName
)n
WHERE m.StudentName= n.StudentName'
EXEC sp_executesql @sql
/*******************************************************************************
*删除临时表
********************************************************************************/
DROP TABLE #Course
DROP TABLE #Score
如图
阅读全文
0 0
- 经典行转列例子
- SQL行转列经典例子(转载)
- 经典Robocode例子代码
- ASP经典代码例子
- asp经典例子
- ASP编程经典例子
- overriding经典例子
- Spring入门经典例子
- c++继承经典例子
- JavaScript 经典例子
- jsp的经典例子
- java经典例子
- javascript经典例子
- java 反射经典例子
- SQL语句经典例子
- JAVA多线程经典例子
- javascript经典例子
- JavaScript 经典例子
- 九度 题目1028:继续畅通工程
- cookie和session
- Gym
- eclipse_代码块缩进
- 运行ggplot出现问题:no display name and no $DISPLAY environment variable
- 经典行转列例子
- sys文件系统中文件、文件夹与kobject、kset、kobj_type的对应关系
- IR2110栅极驱动密勒效应解决电路
- 51nod 1434 区间LCM
- Crond详解
- 设计模式
- Eclipse导入web项目变为java项目的解决办法
- hadoop 配置文件
- ORA-10485: Real-Time Query cannot be enabled while applying migration redo