≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 数据库 > SQL Server

SQL SERVER一句Sql把纵向表转为横向表,并分别分组求平均和总平均值

人气:678 时间:2019-05-11

这篇文章主要为大家详细介绍了SQL SERVER一句Sql把纵向表转为横向表,并分别分组求平均和总平均值,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随四海网的小编两巴掌来看看吧!

效果如图所示:
【图片暂缺】
测试sql语句如下:

代码如下:

 
declare @tab table(Class varchar(20),Student varchar(20),Course varchar(50),Quantity decimal(7,2)); 
insert into @tab(Class,Student,Course,Quantity) values('A班','张三','语文',60); 
insert into @tab(Class,Student,Course,Quantity) values('A班','张三','数学',70); 
insert into @tab(Class,Student,Course,Quantity) values('A班','张三','英语',80); 
insert into @tab(Class,Student,Course,Quantity) values('A班','李四','语文',30); 
insert into @tab(Class,Student,Course,Quantity) values('A班','李四','数学',40); 
insert into @tab(Class,Student,Course,Quantity) values('A班','李四','英语',50); 

insert into @tab(Class,Student,Course,Quantity) values('B班','王五','语文',65); 
insert into @tab(Class,Student,Course,Quantity) values('B班','王五','数学',75); 
insert into @tab(Class,Student,Course,Quantity) values('B班','王五','英语',85); 
insert into @tab(Class,Student,Course,Quantity) values('B班','赵六','语文',35); 
insert into @tab(Class,Student,Course,Quantity) values('B班','赵六','数学',45); 
insert into @tab(Class,Student,Course,Quantity) values('B班','赵六','英语',55); 



select * from @tab 

select 
(case when Grouping(Class)=1 then '总平均' when Grouping(Student)=1 then '' else Class end ) as Class 
,(case when Grouping(Class)=1 then '' when Grouping(Student)=1 then '平均' else Student end) as Student 
,avg(语文) as 语文 
,avg(数学) as 数学 
,avg(英语) as 英语 
,avg(总分) as 总分 
from ( 
select Class,Student 
,(select isnull(sum(Quantity),0) from @tab where Class=t.Class and Student=t.Student and Course='语文') as '语文' 
,(select isnull(sum(Quantity),0) from @tab where Class=t.Class and Student=t.Student and Course='数学') as '数学' 
,(select isnull(sum(Quantity),0) from @tab where Class=t.Class and Student=t.Student and Course='英语') as '英语' 
,(select isnull(sum(Quantity),0) from @tab where Class=t.Class and Student=t.Student) as '总分' 
from @tab as t 
group by Class,Student 
) as tempTab 
group by Class,Student,语文,数学,英语,总分 with rollup 
having Grouping(语文)=1 
and Grouping(数学)=1 
and Grouping(英语)=1 

本文来自:http://www.q1010.com/179/7364-0.html

注:关于SQL SERVER一句Sql把纵向表转为横向表,并分别分组求平均和总平均值的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:SQL SERVER

您可能感兴趣的文章

  • SQLserver查询数据类型为ntext是空或NULL值的方法
  • SQLServer的备份和灾难恢复
  • Sqlserver2000 数据库备份实例代码
  • ASP.NET下向SQLServer2008导入文件实例操作方法
  • 用sql脚本创建sqlserver数据库范例语句
  • 用sql脚本创建sqlserver数据库触发器范例语句
  • sqlserver 模糊查询常用方法
  • sqlserver中distinct的用法(不重复的记录)
  • sqlserver中Case的使用方法(上下篇)第1/2页
  • SQLSERVER 表分区操作和设计方法
上一篇:SQL SERVER利用存储过程去除重复行的sql语句
下一篇:SQL SELECT 语句的表连接
热门文章
  • SQL Server SQL获取第一条记录的方法
  • SQL Server出现System.OutOfMemoryException异常的解决方法
  • SQL Server的 update from 语句的简单示例
  • SQL Server 数据库备份方法菜鸟教程
  • SQL Server 多表关联时在where语句中慎用trim()方法
  • SQL Server数据类型及长度限制详细说明
  • mybaits非配置原因,导致SqlSession was not registered for synchronization异常解析
  • SQL Server 收缩后对数据库的使用有影响吗?
  • SQL Server 格式导致的Excel导入sql出现异常的解决方法
  • SQL Server 连接服务器出现错误 7391的解决方法
  • 最新文章
    • SQL Server存储过程基本语法的简单示例
    • sql查询时增加自动编号和分页的简单示例
    • sql轻松应付百万数据的高效数据分页存储过程的简单示例
    • sql获取一条数据中所有字段的名称和值的实现方法
    • sql分割函数的简单示例
    • SQL Server异常捕获的简单示例
    • SQL SERVER回滚恢复误操作数据的实现方法
    • SQL Server函数或存储过程中抛出异常的实现方法
    • SQL Server创建数据库的完整代码
    • SQL Server创建数据库的命令用法示例

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。