【发布时间】:2017-03-21 14:21:37
【问题描述】:
我收到此错误:聚合不能出现在 ON 子句中,除非它位于 HAVING 子句或选择列表中包含的子查询中,并且正在聚合的列是外部引用。
我不知道如何解决这个问题,请帮忙。
set datefirst 2
select [Table 2].[Active_Headcount]
, DATEADD(DD, 7 - (DATEPART(DW, MIN([Table 1].[Term Date]))), MIN([Table 1].[Term Date])) as EndOfWeek
, COUNT(*) as TermsPerWeek
from [Table 1]
left join [Table 2]
on (DATEADD(DD, 7 - (DATEPART(DW, MIN([Table 1].[Term Date]))), MIN([Table 1].[Term Date]))) = [Table 2].[WeekDate]
where [Table 1].[Term Date] not like 'null'
and (
[Table 1].[Term Date] like '%2016%'
or [Table 1].[Term Date] like '%2017%'
)
group by DATEPART(WEEK, [Table 1].[Term Date])
, [Table 2].[Active_Headcount]
order by EndOfWeek asc;
【问题讨论】:
-
(1) 用您正在使用的数据库标记您的问题。 (2) 描述你想做什么。语法错误的查询并不总能传达编写者的意图。
-
我正在汇总日期 [Term Date] 'as EndOfWeek',在星期一结束并希望加入表 2(日期也在星期一结束)。我遇到的问题是,我需要根据“EndOfWeek”而不是 [Term Date] 加入。
-
请编辑添加一些示例数据和预期结果。
-
您能否编辑您的查询以指明哪些列来自哪个表? (例如,将
Active_Headcount更改为[Table 1].Active_Headcount。)谢谢! -
@BenGribaudo 我做了编辑
标签: sql sql-server-2012