2013-07-18 30 views
1

当运行以下查询时,我得到了期望的结果,但是SSMS指示“我没有为'MonthlyTotals'的列2指定列将鼠标放在表的别名,当我鼠标悬停在AVG功能的“总计”,它规定这是一个无效的列名。没有为[table]的列[x]指定列,无效的列名为

SELECT AVG(Totals) as 'MonthlyAvg' from 
(
SELECT [DATE], SUM(Assets) as 'Totals' 
FROM Assets inner join Funds on Assets.FundCode = Funds.FundCode 
WHERE FeeGroupID = 17 
    and (([Date] >= '1/1/2013') 
    AND ([Date] <= '4/1/2013')) 
    and ((Funds.EndDt >= '4/1/2013') OR (Funds.EndDt is null)) 
GROUP BY [DATE] 
) as MonthlyTotals 
+0

假设DATE是表中的一列,并且您想按月分组,那么您应该使用[DATEPART](http: //msdn.microsoft.com/en-us/library/ms174420.aspx)函数,就像'DATEPART(month,DATE)',并选择它以及GROUP BY那样。 – Legion

回答

3

总猜测,但尝试这种替代语法。

SELECT [MonthlyAvg] = AVG(Totals) from 
(
SELECT [DateOf] = [DATE] , [Totals] = SUM(Assets) 
FROM Assets inner join Funds on Assets.FundCode = Funds.FundCode 
WHERE FeeGroupID = 17 
    and (([Date] >= '1/1/2013') 
    AND ([Date] <= '4/1/2013')) 
    and ((Funds.EndDt >= '4/1/2013') OR (Funds.EndDt is null)) 
GROUP BY [DATE] 
) as MonthlyTotals 
+0

这样做,谢谢! –