在连接表和聚合函数的访问SQL查询中使用DATEPART函数

时间:2013-02-07 10:27:24

标签: sql ms-access datepart

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

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的内容但得到相同的错误

1 个答案:

答案 0 :(得分:3)

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

group by
        Clients.ClientID
,       datepart("YYYY", AccountVals.valuationAmount) 
,       datepart("Q", AccountVals.valuationAmount)