
viw资料
SELECT TOP (100) PERCENT ID, CategoryID, TeacherID, 资料名称, 资料类型, 内容, 类别, 总分, 评分次数, 浏览次数, 总分 / CASE 评分次数 WHEN 0 THEN 1 ELSE 评分次数 END AS 平均分
FROM dbo.资料
ORDER BY 平均分 DESC, 类别 DESC
这句中"总分 / CASE 评分次数 WHEN 0 THEN 1 ELSE 评分次数 END" 的CASE在Sql sever 2005中有,在Sql sever 2000中没有,在Sql sever 2000等效的语句怎么写,期盼高手指点.
你好 其实问题不是case when 真正的问题是 TOP (100) PERCENT
在SQL 2000中 top后面雀誉的表达式不可以加括号 所以改成TOP 100 PERCENT
而你的case when 那就最好用括号括起来
所以在2000中的视图 如下
SELECT TOP 100 PERCENT
ID,
CategoryID,
TeacherID,
资料名称,
资料类型,
内容,
类别,
总分,
评分次数,
浏览次数,
总分 / (CASE 评分次数 WHEN 0 THEN 1 ELSE 评分次数 END) AS 平均分
FROM dbo.资料
ORDER BY 平均分 DESC, 类别 DESC
这里再说下 其实这个视旁仿图使用 TOP 100 PERCENT .... ORDER BY
这样的组合是完全没有意义的
它跟
SELECT
ID,
CategoryID,
TeacherID,
资料名顷启段称,
资料类型,
内容,
类别,
总分,
评分次数,
浏览次数,
总分 / (CASE 评分次数 WHEN 0 THEN 1 ELSE 评分次数 END) AS 平均分
FROM dbo.资料
这样的写法等效(除非你所选的字段中有一个列是含聚集索引的)
因为这里的视图最终出来还是一个结果集 它是没有逻辑顺序的。
呵呵 如果LZ不太理解的话,那也没关系 影响不是很大