摘要:
, 除了修改数据以外, 一般不会希望修改语句后再做其他的事情. 不过有时候, 我们希望能够从修改过的行中返回数据, 这个功能可能也有一定的用处. 比如update语句, 除了修改数据以外, 对于发生更新的列, update语句还可以返回这个列更新之前和更新之后的值. 在排除问题, 审核等其他情况下, 这样的功能很有用处. 带有output的insert语句. @@identity只能返... 阅读全文
摘要:
数据脚本为 IF OBJECT_ID('dbo.Customers', 'U') IS NOT NULL DROP TABLE dbo.Customers; GO CREATE TABLE dbo.Customers ( custid INT NOT NULL, companyname VARCHAR(25) NOT NULL, ph... 阅读全文
摘要:
USE tempdb;IF OBJECT_ID('dbo.Orders', 'U') IS NOT NULL DROP TABLE dbo.Orders;GOCREATE TABLE dbo.Orders( orderid INT NOT NULL, orderdate DATE NOT NULL, -- prior to SQL Server 2008 use ... 阅读全文
摘要:
--declare @t table(n int)--insert into @t values(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)--select * from @t --返回在2008年1月有订单活动, 而在08年2月没有订单活动的客户和雇员.--select custid, empid from Sales.Orders where orderdat... 阅读全文
摘要:
--返回每个雇员处理过的订单的最近日期.--select empid, max(orderdate) as maxOrderDate from Sales.Orders group by empid--封装上面的结果集, 并和order表连接, 为每个雇员返回其订单日期最近的订单信息./*with t as (select empid, max(orderdate) as maxOrderDate... 阅读全文
摘要:
独立子查询 独立标量子查询 相关子查询 not in () 的null值处理. --返回由拥有订单数目最多的客户下过的所有订单. 注意, 多个客户可能下过的订单数目是一样的--因此用到了with ties子句--select o.custid, o.orderid, o.orderdate, o.empid from Sales.Orders o wh... 阅读全文
摘要:
declare @t table(n int)declare @i int=1while(@i<1000)begin insert into @t select @i set @i=@i+1end--select * from @t--1. copy all employees five times.--select e.empid,e.firstname,e.lastname, t.... 阅读全文
摘要:
--select * from Sales.Orders --where orderdate>='2007-06-01' and orderdate<'2007-07-01'--获得每个月的最后一天, 原理. 随意取一个有31天的月. 比如1月31--然后加上一个月, 得到2月31. 实际上不存在这天, 应该是2月28或者29. --select DATEADD(MONTH, 1, '2012-0... 阅读全文
摘要:
测试数据 /*目标表和源表*/declare @target table(id int, de varchar(50))declare @source table(id int, de varchar(50))insert into @source values (1,'源1'),(2,'源2'),(3,'源3'),(4,'源4')insert into @target values (1,'... 阅读全文
摘要:
弄了半天. 其实应该就是从字面上来理解. MSDN的解释如下 太难以理解了. 我觉得是. 返回Set_Expression表达式的返回值基础上加上自己和兄弟姐妹的所有的计算列. 例如和得到的结果是 和 这些计算列都是Unit Price的兄弟姐妹. 因此也被返回过来了. 下面这个老外的文章. 可以看到绿色框框里面的计算列成员出现在了下面 再来... 阅读全文