您所在的位置: 首页 > 读书频道 > 设计开发 > 数据库开发 >

5.4 模块化方法(2)

http://book.51cto.com  2007-10-17 13:48  (美)Itzik Ben-gan... 赵立东译  电子工业出版社博文视点  我要评论(0)

在视图VSgn中,联接VsalesRN的两个实例并用上一个月份的行匹配当前行。然后访问当前月份和上一个月份的gty值,并计算差额的标记。下面是SQL Server 2005中VSgn视图的代码。

IF OBJECT_ID(‘dbo.VSgn’) IS NOT NULL
DROP VIEW dbo.VSgn;
GO
CREATE VIEW dbo.VSgn
AS

SELECT Cur.mnth, Cur.qty, SIGN(Cur.qty – Prv.qty) AS sgn
FROM dbo.VsalesRN AS Cur
LEFT OUTER JOIN dbo.VSalesRN AS Prv
ON Cur.rn = Prv.rn + 1;
GO


通过修改VGrp视图,你可以进一步优化该方案, 使用下面的方法计算分组因子。

IF OBJECT_ID(‘dbo.VGrp’) IS NOT NULL
DROP VIEW dbo.VGrp;
GO
CREATE VIEW dbo.VGrp
AS


SELECT mnth, sgn,
DATEADD(month,
-ROW_NUMBER() OVER(PARTITION BY sgn ORDER BY mnth),
mnth) AS grp
FROM dbo.VSgn;
GO YYY

计算分组因子的逻辑有点复杂。根据sgn(趋势)分区并按mnth的顺序计算出行号(rn)。它的意思是,对于每一种趋势,你可以有多个连续的组,它们之间会有间断。试着思考一下在某个趋势中随着rn的递增,mnth值如何变化。只要它们还位于同一个连续组中,它们都会以1为单位递增。一旦出现间断,mnth的递增量会大于1,而rn的递增%

【责任编辑:雪花 TEL:(010)68476606】

回书目   上一节   下一节
上一篇: 5.4 模块化方法(1) 下一篇: 5.5 更新视图
2008年上半年IT技术图书阅读排行大盘点
Perl实例精解(第4版)
SQL Server 2005 Integration Services专家教程
WPF高级编程
CSS、DHTML和Ajax快速上手
 
 验证码: (点击刷新验证码)   匿名发表
  • 网络工程师考试案例动手实验营

  • 作者:郭春柱
  • 本书依据2009年版《网络工程师考试大纲》的考核要求,深入研究了历年网络工程师考试试题的命题风格和试题结构,对考查的知识点..
Copyright©2005-2008 51CTO.COM 版权所有