考试成绩统计问题:

msyyq 2009-08-04 04:27:22
考试成绩统计问题:
如果成绩表(c2cj)中存在化学科(HX)成绩,则计算平均分,否则@temhxpj为0分,但是用下面语句总中提示
“服务器: 消息 207,级别 16,状态 3,行 14
列名 'hx' 无效。”

DECLARE @temhxpj decimal(4,1)
if exists(select 1 from syscolumns where id=object_id('c2cj') and name='hx')
select @temhxpj=round(avg(hx),2) from mydata.dbo.c2cj
select @temhxpj=0

问题出在哪里?
...全文
147 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
msyyq 2009-08-04
  • 打赏
  • 举报
回复
主要是当字段“HX”不存在时,未跳过“select @temhxpj=round(avg(hx),2) from mydata.dbo.c2cj ”语句,因此总提示“HX字段不存在”
linguojin11 2009-08-04
  • 打赏
  • 举报
回复
mydata.dbo.c2cj
object_id('c2cj')--这是在mydata数据库下面执行的吗
msyyq 2009-08-04
  • 打赏
  • 举报
回复
重新描述问题:
考试成绩统计问题:
如果成绩表(c2cj)中存在化学(HX)字段,则计算平均分(用变量@temhxpj表示),如果不存在化学字段,则@temhxpj=0,但是用下面语句总中提示
“服务器: 消息 207,级别 16,状态 3,行 14
列名 'hx' 无效。”

DECLARE @temhxpj decimal(4,1) /*定义变量*/
if exists(select 1 from syscolumns where id=object_id('c2cj') and name='hx') /*判断字段是否存在*/
select @temhxpj=round(avg(hx),2) from mydata.dbo.c2cj
else
select @temhxpj=0

问题出在哪里?
sdhdy 2009-08-04
  • 打赏
  • 举报
回复
DECLARE @temhxpj decimal(4,1)
if exists(select 1 from mydata..syscolumns where id=object_id('c2cj') and name='hx')
select @temhxpj=round(avg(hx),2) from mydata.dbo.c2cj
sdhdy 2009-08-04
  • 打赏
  • 举报
回复
那就说明mydata.dbo.c2cj没有这个字段:hx
soft_wsx 2009-08-04
  • 打赏
  • 举报
回复
在我电脑上运行没有进示错误呀!你是不是内容没有选全
soft_wsx 2009-08-04
  • 打赏
  • 举报
回复
mydata.dbo.c2cj 最好放这个表的建表语句弄出来看看
msyyq 2009-08-04
  • 打赏
  • 举报
回复
在表结构中,如果考了化学则有化学这一列,如果不考则无此列。
hery2002 2009-08-04
  • 打赏
  • 举报
回复
搞清楚化学科这一列和有化学科的成绩是两个概念,
你把表结构和数据写点出来看看.貌似你搞混了.

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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