SQL Server 窗体函数主要用来处理由 OVER 子句定义的行集, 主要用来分析和处理 Running totals Moving averages Gaps and islands 先看一个简单的应用 - 按照订单额从高到低对订单表信息做一个排名 USE TSQL2012 GO SELECT orderid, orderdate, val, RANK() OVER(ORDER BY val DESC) AS rnk FROM Sales.OrderValues ORDER BY rnk…
这一章主要是介绍 窗体中的 Aggregate 函数, Rank 函数, Distribution 函数以及 Offset 函数. Window Aggregate 函数 Window Aggregate 函数和在Group分组中使用的聚合函数是一样的, 只是不再定义Group并且是通过 OVER子句来定义和使用的. 在标准的SQL中, 窗体聚合函数是支持这三种元素的 - Partitioning, Ordering 和 Framing function_name(<arguments>) O…
刷新SQL Server所有视图.函数.存储过程 更多   sql   此脚本用于在删除或添加字段时刷新相关视图,并检查视图.函数.存储过程有效性. [SQL]代码 --视图.存储过程.函数名称 DECLARE @NAME NVARCHAR(255); --局部游标 DECLARE @CUR CURSOR --自动修改未上状态为旷课 SET @CUR=CURSOR SCROLL DYNAMIC FOR SELECT NAME FROM DBO.SYSOBJECTS WHERE NAME NOT…
Chapter 7 Beyond the Fundamentals of Querying window function是什么呢?就是你SELECT出来一个结果集,然后对于每一行,你都想给它对应一个标量(a scalar),而这个标量是通过a subset of rows计算得到的,而这个a subset of the rows其实就是你得到的结果集里面的一个subset(子集).所以说就是把每一行都对应a subset of the rows,而这个对应关系通过OVER指定.举个例子: SE…
Chapter 2 Single-Table Queries GROUP BY之后的阶段的操作对象就是组(可以把一组想象成很多行组成的)了,HAVING负责过滤掉一些组.分组后的COUNT(*)表示每组的行数.COUNT(*)会把包含NULL的行也数进来,比如有5行的一组数据是30, 10, NULL, 10, 10,列名叫qty,那么COUNT(qty)会返回4,而COUNT(*)返回5.可以SELECT DISTINCT,也可以在聚合函数中指定DISTINCT,例如:COUNT(DISTIN…
Chapter 10 Programmable Objects 声明和赋值一个变量: DECLARE @i AS INT; SET @i = 10; 变量可以让你暂时存一个值进去,然后之后再用,作用域是同一个Batch(批处理). 也可以这么用: DECLARE @firstname AS NVARCHAR(10), @lastname AS NVARCHAR(20); SELECT @firstname = firstname, @lastname = lastname FROM HR.Emp…
Chapter 5 Table Expressions 一个表表达式(table expression)是一个命名的查询表达式,代表一个有效的关系表.SQL Server包括4种表表达式:派生表(derived tables).公用表表达式(common table expressions (CTEs),).视图(views).内联表值函数(inline table-valued functions (inline TVFs)).使用表表达式的好处通常在于逻辑层面而非性能. 派生表(derive…
Chapter 8 Data Modification SQL Server 2008开始,支持一个语句中插入多行: INSERT INTO dbo.Orders (orderid, orderdate, empid, custid) VALUES (10003, '20090213', 4, 'B'), (10004, '20090214', 1, 'A'), (10005, '20090213', 1, 'C'), (10006, '20090215', 3, 'C'); 这个语句作为一个原…
Chapter 9 Transactions and Concurrency SQL Server默认会把每个单独的语句作为一个事务,也就是会自动在每个语句最后提交事务(可以设置IMPLICIT_TRANSACTIONS来改变此默认行为). 事务的四个属性: 原子性 Atomicity.遇到错误时,SQL Server通常会自动回滚事务(除了一些不太严重的错误比如主键冲突.尝试获取锁超时).(可以通过 @@TRANCOUNT 判断当前是否处于一个事务当中) 一致性 Consistency.指同时…
Chapter 6 Set Operators 语法如下: Input Query1 <set_operator> Input Query2 [ORDER BY ...] 有ORDER BY子句的查询不会返回一个set,而会返回一个cursor.上面的ORDER BY是对整个运算后的结果而言的.两个查询必须有相同数量的列,而且数据类型要兼容(低级的数据类型能隐式地转为高级的数据类型),结果集中的列名是由第一个查询的列名决定的.而且两个查询都不能有ORDER BY,如果你想用TOP什么的话,可以…