当前位置: 代码迷 >> Sql Server >> 聚合不能出现在 ON 子句中,除非该子句位于 HAVING 子句或选择列表所包含的子查询中,并且所聚合的列是外部引用。解决方案
  详细解决方案

聚合不能出现在 ON 子句中,除非该子句位于 HAVING 子句或选择列表所包含的子查询中,并且所聚合的列是外部引用。解决方案

热度:85   发布时间:2016-04-27 12:42:23.0
聚合不能出现在 ON 子句中,除非该子句位于 HAVING 子句或选择列表所包含的子查询中,并且所聚合的列是外部引用。
SQL code
select tabtimedata.区站号 as 区站号,tabaddress.站名 as 站名 , DateDiff(n, max(日期时间),getdate()) as 状态from  tabtimedata join tabaddress on  tabtimedata.区站号 = tabaddress.区站号 and DateDiff(n, max(日期时间),getdate())>120group by tabtimedata.区站号,tabaddress.站名 order by DateDiff(n, max(日期时间),getdate()) desc

--------------------------
聚合不能出现在 ON 子句中,除非该子句位于 HAVING 子句或选择列表所包含的子查询中,并且所聚合的列是外部引用

------解决方案--------------------
SQL code
select tabtimedata.区站号 as 区站号,tabaddress.站名 as 站名 , DateDiff(n, max(日期时间),getdate()) as 状态from  tabtimedata join tabaddress on  tabtimedata.区站号 = tabaddress.区站号 group by tabtimedata.区站号,tabaddress.站名 having  DateDiff(n, max(日期时间),getdate())>120order by DateDiff(n, max(日期时间),getdate()) desc
------解决方案--------------------
SQL code
select tabtimedata.区站号 as 区站号,tabaddress.站名 as 站名 , DateDiff(n, max(日期时间),getdate()) as 状态from  tabtimedata join tabaddress on  tabtimedata.区站号 = tabaddress.区站号  group by tabtimedata.区站号,tabaddress.站名 HAVING DateDiff(n, max(日期时间),getdate())>120order by DateDiff(n, max(日期时间),getdate()) desc
------解决方案--------------------
try:
select tabtimedata.区站号 as 区站号,tabaddress.站名 as 站名 , DateDiff(n, max(日期时间),getdate()) as 状态 
from tabtimedata join tabaddress on tabtimedata.区站号 = tabaddress.区站号 
where DateDiff(n, max(日期时间),getdate())>120 
group by tabtimedata.区站号,tabaddress.站名 
order by DateDiff(n, max(日期时间),getdate()) desc


------解决方案--------------------
select
 tabtimedata.区站号 --as 区站号 把这个去掉,应该就可以了
,tabaddress.站名 as 站名 ,
 DateDiff(n, max(日期时间),getdate()) as 状态
from 
 tabtimedata 
join tabaddress on 
 tabtimedata.区站号 = tabaddress.区站号 and DateDiff(n, max(日期时间),getdate())>120
group by
 tabtimedata.区站号,tabaddress.站名 
order by
 DateDiff(n, max(日期时间),getdate()) desc
  相关解决方案