sql查询语句时候遇到困难

wuzhengzheng_407 2018-02-06 11:05:14
declare @届别 nvarchar(50),
@考试类型 nvarchar(50),
@文理科 nvarchar(50)
--声明游标变量
set @届别='20届'
set @考试类型='高一上期期末考试'
set @文理科='未分科'
declare kemu_cursor cursor
for select 科目 from 学科表 where 文理科=@文理科
open kemu_cursor
declare @kemu nvarchar(50)
fetch next from kemu_cursor into @kemu
while @@fetch_status=0
begin
select count(*) from stu_chengji where 届别=@届别 and 考试类型=@考试类型 and @kemu >=(select [985线] from 分数线 where 届别=@届别 and 考试类型=@考试类型 and 科目=''+@kemu+'')
fetch next from kemu_cursor into @kemu
end
close kemu_cursor



错误代码如下:
消息 16915,级别 16,状态 1,第 9 行
名为 'kemu_cursor' 的游标已存在。
消息 245,级别 16,状态 1,第 15 行
在将 nvarchar 值 '总分成绩' 转换成数据类型 int 时失败。
...全文
1068 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChinaITOldMan 2018-02-07
  • 打赏
  • 举报
回复
1. 在close cursor后边加个deallocate cursor进行释放 2.代码不要用中文变量与字段
wuzhengzheng_407 2018-02-06
  • 打赏
  • 举报
回复
我想直接进行动态拼接sql语句不知可否
wuzhengzheng_407 2018-02-06
  • 打赏
  • 举报
回复
引用 3 楼 superwfei 的回复:
select count(*) from stu_chengji where 届别=@届别 and 考试类型=@考试类型 and @kemu >=(select [985线] from 分数线 where 届别=@届别 and 考试类型=@考试类型 and 科目=''+@kemu+'') 你这个指令有问题,@kemu是字符型的,[985线]是根据@kemu查出来的数值型的,你得从新考虑逻辑关系
是的现在的问题就在这个地方,@kemu是我的一个字段,我就想动态进行查询比较,比如当@kemu是语文成绩的时候,就自动比对出来查找语文成绩过985线的人数
听雨停了 2018-02-06
  • 打赏
  • 举报
回复
引用 1 楼 wuzhengzheng_407 的回复:
我想把游标中查询到的关键词作为一个字段然后再进行判断,但是在实际中却把游标作为一个字符与后面的比较了,请问各位高手该如何解决?
看你上面写的sql,估摸着你应该是想得到 高一上期期末考试中每个科目达到了985分数线的人数的总数。 stu_chengji表中应该有一个分数的字段吧,如果有的话大致改成这样就应该可以了

select count(1) from stu_chengji a
INNER JOIN  分数线 b on a.届别=b.届别 and a.考AND=b.考试类型 and a.科目=b.科目
WHERE  a.届别=@届别 and a.考试类型=@考试类型 and a.科目=@kemu
and b.[985线]<=a.分数	--stu_chengji表的分数的字段
文盲老顾 2018-02-06
  • 打赏
  • 举报
回复
游标close只是关闭游标,没有释放声明 在close cursor后边加个deallocate cursor进行释放 另外,为避免在不同的存储过程中出现游标重名,在声明的时候加上local限制,即:declare cursorname cursor local for ...
文盲老顾 2018-02-06
  • 打赏
  • 举报
回复
select count(*) from stu_chengji where 届别=@届别 and 考试类型=@考试类型 and @kemu >=(select [985线] from 分数线 where 届别=@届别 and 考试类型=@考试类型 and 科目=''+@kemu+'') 你这个指令有问题,@kemu是字符型的,[985线]是根据@kemu查出来的数值型的,你得从新考虑逻辑关系
wuzhengzheng_407 2018-02-06
  • 打赏
  • 举报
回复
我想把游标中查询到的关键词作为一个字段然后再进行判断,但是在实际中却把游标作为一个字符与后面的比较了,请问各位高手该如何解决?

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧