一: 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