T-SQL 关于group by ,having问题

USEMASTERGOSELECT*FROMSTUMARKSGOselect*fromstumarkswherestuNolike's2530_'groupbystuno... USE MASTER
GO
SELECT *FROM STUMARKS
GO
select * from stumarks
where stuNo like's2530_' group by stuno having writtenExam <90
go
ExamNo stuNo writtenExam LabExam
s271811 s25303 90 58
s271813 s25302 60 90
s271815 s25302 75 0
s271816 s25301 87 82
s271819 s25318 66 48
表格,查询语句如上,执行后提示:消息 8121,级别 16,状态 1,第 2 行
HAVING 子句中的列 'stumarks.writtenExam' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。不明白到底是哪里有问题了?GROUP BY 和HAVING子句不是这样用的么?
展开
 我来答
ahyzwq2011
2011-11-15
知道答主
回答量:28
采纳率:0%
帮助的人:19.6万
展开全部
多条件查询语句,你的语法有错误
如果只用WHere的话,多条件用户And或Or连接,Group BY放在最后
where和Having同时用只能是嵌套查询,你的语句有错误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lsyuan_hello
2011-11-15 · TA获得超过1691个赞
知道小有建树答主
回答量:663
采纳率:0%
帮助的人:692万
展开全部
having后面必须跟聚合函数,如sum、avg等,不能单独放一个字段。如果是单独的字段条件放到where里面就行了
select * from stumarks
where stuNo like's2530_' and writtenExam <90 group by stuno
追问
改成你这样了,错误提示:消息 8120,级别 16,状态 1,第 2 行
选择列表中的列 'stumarks.ExamNo' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
还是不对,是怎么回事呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
珏不放弃晓
2011-11-15
知道答主
回答量:17
采纳率:0%
帮助的人:16.1万
展开全部
group by 后面有那些字段,就只能查那些字段和一些聚合函数
select stuno from stumarks
where stuNo like 's2530_' group by stuno having writtenExam <90
这样
追问
改成你这样,错误提示还是一样的
追答
select 
ExamNo,stuNo,writtenExam,LabExam 1
from stumarks
where stuNo like 's2530_' and writtenExam <90 group by ExamNo,stuNo,writtenExam,LabExam 2
writtenExam <90
1和2一致
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式