Sql server 2008 获取SQL Server中存储过程中一行的平均值

Sql server 2008 获取SQL Server中存储过程中一行的平均值,sql-server-2008,tsql,stored-procedures,Sql Server 2008,Tsql,Stored Procedures,我在SQL Server中有一个存储过程,它返回某些列的平均值,如下所示: ALTER PROCEDURE [dbo].[Financial] AS BEGIN SELECT avg([aa ]) as 'aaa', avg([bb]) as 'bbb', avg([cc ]) as 'ccc', avg([dd]) as 'ddd', avg([ee]) as 'eee', avg([

我在SQL Server中有一个存储过程,它返回某些列的平均值,如下所示:

ALTER PROCEDURE [dbo].[Financial] 
AS
BEGIN
    SELECT 
        avg([aa ]) as 'aaa',
        avg([bb]) as 'bbb',
        avg([cc ]) as 'ccc',
        avg([dd]) as 'ddd',
        avg([ee]) as 'eee',
        avg([ ff]) as 'fff'
    FROM [FIN]
END
现在我的问题是,我想得到这个过程结果的平均值,我的意思是这个当前过程给我一行,它包含某个列的平均值。现在我想得到这一行的平均值!我能做什么

让我进一步解释一下,上述程序的结果可能是:

4,7,8,9,6
下一步我要的是

4,7,8,9,6 

处理空值有点痛苦。如果一列中的所有值都可以为空,则以下内容将计算平均值:

SELECT aaa, bbb, ccc, ddd, eee, fff,
    ((coalesce(aaa, 0) + coalesce(bbb, 0) + coalesce(ccc, 0) + coalesce(ddd, 0) +
      coalesce(eee, 0) + coalesce(fff, 0)) /
     ((case when aaa is null then 0.0 else 1.0 end) +
      (case when bbb is null then 0.0 else 1.0 end) +
      (case when ccc is null then 0.0 else 1.0 end) +
      (case when ddd is null then 0.0 else 1.0 end) +
      (case when eee is null then 0.0 else 1.0 end) +
      (case when fff is null then 0.0 else 1.0 end)
     )
    ) AS Average
FROM (
    SELECT 
        avg([aa ]) as 'aaa',
        avg([bb]) as 'bbb',
        avg([cc ]) as 'ccc',
        avg([dd]) as 'ddd',
        avg([ee]) as 'eee',
        avg([ ff]) as 'fff'
    FROM [FIN]
) AS Averages

请注意,您可能希望使用表值函数或视图,而不是存储过程。这将允许您在另一个查询中直接使用结果。+1-这比我的好得多;我对空值有太多的假设。@LittleBobbyTables:(我告诉过你,当我这样说的时候:选择aaa,bbb,ccc,ddd,eee,fff,((coalesce(aaa,0)+coalesce(bbb,0),…sql不知道aaa和bbb,…)(@Sara…当我用fin as运行前面的
(选择1作为[aa],选择2作为[bb],选择2.5作为[cc],选择3作为[dd]),4作为[ee],5作为[ff])
,它有效。它对你有效吗?