0

我想在表格中选择日期的年份和季度部分,而不是整个日期。我构建了以下查询来实现这一点:

SELECT Clients.ClientID,
       Sum(AccountVals.ValuationAmount) AS SumOfValuationAmount,
       Datepart("YYYY", AccountVals.valuationAmount) AS valYear,
       Datepart("Q", AccountVals.valuationAmount) AS valQuarter
FROM   (Accounts
        INNER JOIN Clients
          ON Accounts.ClientID = Clients.ClientID)
       INNER JOIN AccountVals
         ON Accounts.AccountID = AccountVals.AccountID
GROUP  BY Clients.ClientID,
          SumOfValuationAmount,
          valYear,
          valQuarter;

尽管我已经成功地使用DATEPART了一个简单的选择查询,但这个查询既是一个聚合函数又是一个链接表的事实让我很震惊。有任何想法吗?

编辑:我意识到我的查询没有任何标准,这意味着它可能试图聚合来自不同日期的结果,因此它无法显示日期部分。我尝试添加类似HAVING valYear = 2012 AND valQuarter = 3但得到相同的错误

4

1 回答 1

3

我认为您不能在group by子句中使用别名,至少在没有子查询的情况下不能。一种解决方案是在组中重复精确的表达式,fe:

group by
        Clients.ClientID
,       datepart("YYYY", AccountVals.valuationAmount) 
,       datepart("Q", AccountVals.valuationAmount)
于 2013-02-07T10:31:23.713 回答