2007-02-01

用SQL Server Having计算列和平均值

来源: 本站收集整理 作者:佚名 评论 0 条
 

USE [AdventureWorks]

GO

/****** Object:  UserDefinedFunction 

[dbo].[SalesTotals_fnt]    

Script Date: 12/09/2006 11:32:54 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE FUNCTION [dbo].[SalesTotals_fnt]()

RETURNS TABLE

AS RETURN      

(SELECT SalesOrderID, 

SUM(LineTotal)AS TotalSale      

FROM Sales.SalesOrderDetail      

GROUP BY Sales.SalesOrderDetail.SalesOrderID)

列表C

CREATE FUNCTION [dbo].[AverageSale_fns] (      

-- Add the parameters for the function here      

--  )RETURNS money

ASBEGIN      

-- Declare the return variable here      

DECLARE @Result money

-- Add the T-SQL statements to compute the return value here      

SET @Result =(SELECTAvg(TotalSale)AS AverageSale      

FROM dbo.SalesTotals_fnt())

-- Return the result of the function      

RETURN @Result

END

列表D

DECLARE @Avg moneySELECT @Avg = dbo.AverageSale_fns()

SELECT       *, @Avg as Average,      

TotalSale / @Avg as Ratio,      CASE             

WHEN TotalSale / @Avg > 1 THEN 'Above Average'           

 WHEN TotalSale / @Avg < 1 THEN 'Below Average'            

ELSE 'Average'      END

FROM dbo.SalesTotals_fnt()

列表E

现在你知道了如何根据一个子表使用Having子句来测试合计值。当你需要在一个查询中使用两个不同的合计函数时,最好是把它们分解成单独的函数,然后再进行组合(如前一个例子所说明的)。

与典型编程一样,使每个函数专注于一件事情。然后,你就可以应用它们,并可不断重复应用。


共2页: 上一页 [1] 2 下一页
(本文仅表明作者个人观点,不代表本站及其管理员立场.) 推荐 收藏 投稿 打印 返回 关闭
上一篇:SQL Server 2005中的所有权链  
下一篇:专家在线:SQL Server的数据清理技术
    评论加载中…
 推荐文章
     

网站首页  -  网站地图 -   站长论坛  -  网站投稿  -    -  网站管理
Copyright © 2008 芜湖站长站 All Rights Reserved 皖ICP备07500611号