| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 711 人关注过本帖
标题:HAVING句子无效
只看楼主 加入收藏
TZTJ
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:737
专家分:115
注 册:2008-1-15
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:19 
HAVING句子无效
select 姓名, sum(iif(课程名='政治',成绩,0))政治 ,sum(iif(课程名='语文',成绩,0))语文,sum(iif(课程名='数学',成绩,0))数学,sum(iif(课程名='英语',成绩,0))英语,sum(iif(课程名='物理',成绩,0))物理,sum(iif(课程名='化学',成绩,0))化学,sum(iif(课程名='历史',成绩,0))历史,sum(iif(课程名='地理',成绩,0))地理,sum(成绩)as 总分,avg(成绩)as 平均分 ;
from xscj2 having  班级=bj or 年级=bj group by 学号;
order by 平均分 desc;
into cursor temp
请高手指点,四五年前还可以用,到现在出现HAVING 句子无效
2015-10-08 22:34
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:5 
把having 改成 where
2015-10-08 23:36
kinvanhon
Rank: 5Rank: 5
来 自:战争学院
等 级:贵宾
威 望:16
帖 子:99
专家分:258
注 册:2014-10-7
收藏
得分:0 
程序代码:
SELECT [ALL | DISTINCT] [TOP nExpr [PERCENT]] Select_List_Item [, ...]
   FROM [FORCE] Table_List_Item [, ...]
      [[JoinType] JOIN DatabaseName!]Table [[AS] Local_Alias]
      [ON JoinCondition [AND | OR [JoinCondition | FilterCondition] ...] 
   [WITH (BUFFERING = lExpr)]
   [WHERE JoinCondition | FilterCondition [AND | OR JoinCondition | FilterCondition] ...]
   [GROUP BY Column_List_Item [, ...]] [HAVING FilterCondition [AND | OR ...]]
   [UNION [ALL] SELECTCommand]
   [ORDER BY Order_Item [ASC | DESC] [, ...]]
   [INTO StorageDestination | TO DisplayDestination]
   [PREFERENCE PreferenceName] [NOCONSOLE] [PLAIN] [NOWAIT]

having在group by后面
2015-10-09 08:22
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
以下是引用TZTJ在2015-10-8 22:34:08的发言:

select 姓名, sum(iif(课程名='政治',成绩,0))政治 ,sum(iif(课程名='语文',成绩,0))语文,sum(iif(课程名='数学',成绩,0))数学,sum(iif(课程名='英语',成绩,0))英语,sum(iif(课程名='物理',成绩,0))物理,sum(iif(课程名='化学',成绩,0))化学,sum(iif(课程名='历史',成绩,0))历史,sum(iif(课程名='地理',成绩,0))地理,sum(成绩)as 总分,avg(成绩)as 平均分 ;
from xscj2 having  班级=bj or 年级=bj group by 学号;
order by 平均分 desc;
into cursor temp
请高手指点,四五年前还可以用,到现在出现HAVING 句子无效
    楼主,一个是如3楼提到的,having子句应在group子句后面;另一个是having其实与where子句并不完全相同,前者主要是用在条件中含有统计函数的情况下,而后者正相反。比如:列出平均分不满70的考生,应该这样写:SELECT 学号,姓名,AVG(成绩)平均分 FROM 成绩表 GROUP BY 学号,姓名 HAVING AVG(成绩)<70;再比如:找出所有课程都及格的考生,应该这样写:SELECT 学号,姓名 FROM 成绩表 GROUP BY 学号,姓名 HAVING MIN(成绩)>=60,而不能写成:SELECT 学号,姓名 FROM T1 WHERE 成绩>=60,更不能写成:SELECT 学号,姓名 FROM T1 WHERE MIN(成绩)>=60。
    像你这条命令,除了这个问题外,还有一个问题:GROUP BY子句后面除了你写的“学号”字段外,还应有“姓名”,因为“姓名”字段在你的输出项中,又是唯一没套上统计函数的字段,必须要写在GROUP BY子句中。

[ 本帖最后由 taifu945 于 2015-10-10 07:35 编辑 ]
2015-10-09 11:12
TZTJ
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:737
专家分:115
注 册:2008-1-15
收藏
得分:0 
非常感谢高手指点。但让我感到困惑的早几年测试了很多次都正常使用,换成window8系统后才出现这个问题。
2015-10-09 15:20
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
Windows 8让你编程更严谨、规范,是一件好事。
2015-10-09 15:36
TZTJ
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:737
专家分:115
注 册:2008-1-15
收藏
得分:0 
按照高手们的指点,问题还是不能解决,出现都是同样的问题
2015-10-09 15:40
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
以下是引用TZTJ在2015-10-9 15:40:33的发言:

按照高手们的指点,问题还是不能解决,出现都是同样的问题
我看不懂为什么还有同样的问题。我在4楼已经提示你,HAVING子句中的条件是要带统计函数的。你命令中的2个条件项都不带统计函数,应放在WHERE子句中。既然不带HAVING子句了,又如何会出现同样的问题呢?
2015-10-09 15:55
TZTJ
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:737
专家分:115
注 册:2008-1-15
收藏
得分:0 
已经把having换成where也不行
2015-10-09 15:59
TZTJ
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:737
专家分:115
注 册:2008-1-15
收藏
得分:0 
如果换成where ,出现group by句子无效
2015-10-09 16:04
快速回复:HAVING句子无效
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022674 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved