找到学生的等级-Sql Compact

时间:2010-05-22 05:41:24

标签: sql sql-server-ce

我有一张这样的表:

姓名Mar1 Mar2 Mar3总计

xxx 80 80 80 240

yyy 60 70 50 180

aaa 85 65 75 225

我想根据总数找到学生的等级。我使用SQL Compact 3.5。由于我们在sql server中有rank()函数,我们有什么东西可以找到学生排名???当我使用“select Total,rank()over(order by total desc)i1 从标记“它给出错误

”  重大错误0x80040E14,次要错误25501

  

选择总计,排名()(按总计desc排序)i1   从标记   解析查询时出错。 [令牌行号= 1,令牌行偏移= 21,令牌错误=超过]   “

Sql Compact支持rank()结束还是有其他方式???

1 个答案:

答案 0 :(得分:1)

根据搜索结果,似乎over()不适用于sql-compact。所以我尝试了here中的自联接概念。我刚刚修改了查询,以便正确处理重复值。删除等号。修改后的查询是:

SELECT a1.Name, a1.Total, COUNT(a2.Total) Rank
  FROM StMarks a1, StMarks a2
 WHERE a1.Total < a2.Total or (a1.Total=a2.Total and a1.Name = a2.Name)
GROUP BY a1.Name, a1.Total
ORDER BY a1.Total DESC, a1.Name DESC;

现在很有礼貌。