我想在表格中选择日期的年份和季度部分而不是整个日期。我构建了以下查询来实现此目的:
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
的内容但得到相同的错误
答案 0 :(得分:3)
我认为你不能在group by
子句中使用别名,至少在没有子查询的情况下。一种解决方案是重复组中的确切表达式,例如:
group by
Clients.ClientID
, datepart("YYYY", AccountVals.valuationAmount)
, datepart("Q", AccountVals.valuationAmount)