SQL Server 2005使用手记

在使用COMPUTE时,遇到如下提示信息:
SQL 执行错误。
已执行 SQL 语句:SELECT 序号, 考核时间, 考核名称, 评定结果 FROM 考核成绩表 COMPUTE COUNT(考核时间) BY 评定结果
错误源:.NET SqlClient Data Provider
错误信息:在排序依据列表中没有找到COMPUTE BY子句中的某一项。计算依据列表中的所有表达式也必须同时出现在排序依据列表中。
将语句修改为:
SELECT 序号, 考核时间, 考核名称, 评定结果 FROM 考核成绩表 ORDER BY 评定结果 COMPUTE COUNT(考核时间) BY 评定结果
后可以正常执行。但又遇到一个问题,似乎得到的结果不正确。后面发现是因为我是在表的SQL窗口中执行的语句,而带有COMPUTE的语句返回的是多个结果集,需要在单独的查询窗口中执行才能得到全部的结果。新建一个查询后再执行命令得到一堆的结果集,貌似正确了。
又试图将两个字段相加的结果来做为COMPUTE BY的依据字段,因为其中一个字段有NULL值,所以得出来的结果并不正确,语句如下:
SELECT 序号, 考核时间, 考核名称, 课目, 评定结果
FROM  考核成绩表
ORDER BY CONVERT(varchar, 考核时间,120) + ISNULL(考核名称, "")
COMPUTE COUNT(评定结果) BY CONVERT(varchar, 考核时间,120) + ISNULL(考核名称, "")
其中将考核名称替换成ISNULL(考核名称, ""),结果出现错误:
消息 1038,级别 15,状态 4,第 4 行
缺少对象或列名,或者对象或列名为空。对于 SELECT INTO 语句,请确保每列均具有名称。对于其他语句,请查找空的别名。不允许使用定义为 "" 或 [] 的别名。请添加名称或单个空格作为别名。
若是将ISNULL(考核名称, "")换成ISNULL(考核名称, " ")则提示:
消息 207,级别 16,状态 1,第 3 行
列名 ' ' 无效。
消息 207,级别 16,状态 1,第 4 行
列名 ' ' 无效。
消息 163,级别 15,状态 1,第 4 行
计算依据列表与排序依据列表不匹配

而将CONVERT(varchar, 考核时间,120) + ISNULL(考核名称, "")写成(CONVERT(varchar, 考核时间,120) + ISNULL(考核名称, "")) AS 别名后出现如下提示:
消息 156,级别 15,状态 1,第 4 行
关键字 'as' 附近有语法错误。
后面单独执行SELECT CONVERT(varchar, 考核时间,120) + ISNULL(考核名称, "") FROM 考核成绩表
仍然是消息1038,于是注意到应当用单引号而不是双引号,改过来后结果正常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值