| 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) | 列表CCREATE 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 | 列表DDECLARE @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 下一页 |
评论加载中…