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子句不是这样用的么? 展开
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子句不是这样用的么? 展开
展开全部
多条件查询语句,你的语法有错误
如果只用WHere的话,多条件用户And或Or连接,Group BY放在最后
where和Having同时用只能是嵌套查询,你的语句有错误
如果只用WHere的话,多条件用户And或Or连接,Group BY放在最后
where和Having同时用只能是嵌套查询,你的语句有错误
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
having后面必须跟聚合函数,如sum、avg等,不能单独放一个字段。如果是单独的字段条件放到where里面就行了
select * from stumarks
where stuNo like's2530_' and writtenExam <90 group by stuno
select * from stumarks
where stuNo like's2530_' and writtenExam <90 group by stuno
追问
改成你这样了,错误提示:消息 8120,级别 16,状态 1,第 2 行
选择列表中的列 'stumarks.ExamNo' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
还是不对,是怎么回事呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
group by 后面有那些字段,就只能查那些字段和一些聚合函数
select stuno from stumarks
where stuNo like 's2530_' group by stuno having writtenExam <90
这样
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一致
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询