首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

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

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

聚合不能出现在 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

热点排行