分组查询,视图,行列转置

一:   GROUP BY对查询结果进行分组

              利用SQL GROUP  BY子句,能够快速而简便地将查询结果表按照指定的字段进行分组,值相等的记录分为一组。GROUP  BY子句一般和SQL聚合函数起使用。

【基本格式】:
     SELECT  <字段表达式>  FROM  <表名  GROUP  BY  <字段名>
 
二:视图
1.视图的定义:
(1).视图是一虚拟表它表示一张表的部分数据或多张表的综合数据,其结构和数据是建立在对表的查询基础上
(2).视图中并不存放数据,而是存放在视图所引用的原始表(基表)中
(3).同一张原始表,根据不同用户的不同需求,可以创建不同的视图
 
2.视图的用途
(1)筛选表的行
(2)防止未经许可的用户访问敏感数据
(3)降低数据库的复杂程度
(4)多个物理数据库抽象为一个逻辑数据库
 
三: 行列转置
declare @sqlstr varchar(8000)
set @sqlstr='select [TransID],[KeyNO]'
//读取出所要转置的列信息
SELECT @sqlstr=@sqlstr + ',(SELECT sum([Expr4]) fee FROM [BEST].[dbo].[View_temp] group by expr1 having [Expr1]='''+Expr1+''') as ['+Expr1+']'  
FROM [BEST].[dbo].[View_temp] group by [Expr1]
//根据读取出的转置的列信息拼接sql
Select @sqlstr = @sqlstr+',[SSJE],[YFJE],[MLJE],ZLJE from [View_temp] group by [KeyNO],[TransID],[SSJE],[YFJE],[MLJE],ZLJE'
//执行sql
Exec (@sqlstr)
//输出拼接的sql
 
print @sqlstr
 
 
 
 
 
     
 
 
 
原文地址:https://www.cnblogs.com/ProgrammerGE/p/2811805.html