如何在 Sql Server Compact Edition SELECT 语句中复制 Rank 函数?

Posted

技术标签:

【中文标题】如何在 Sql Server Compact Edition SELECT 语句中复制 Rank 函数?【英文标题】:How would I duplicate the Rank function in a Sql Server Compact Edition SELECT statement? 【发布时间】:2010-06-11 21:31:03 【问题描述】:

SQL Server Compact Edition 似乎不支持 RANK() 函数。 (请参阅函数(SQL Server Compact Edition),http://msdn.microsoft.com/en-us/library/ms174077(SQL.90).aspx)。

如何在 SQL Server Compact Edition SELECT 语句中复制 RANK() 函数。

(对于任何示例选择语句,请使用 Northwind.sdf,因为它是我可以使用 SQL Server 2005 Management Studio 打开的唯一一个。)

【问题讨论】:

【参考方案1】:
SELECT x.[Product Name], x.[Unit Price], COUNT(y.[Unit Price]) Rank 
FROM Products x, Products y 
WHERE x.[Unit Price] < y.[Unit Price] or (x.[Unit Price]=y.[Unit Price] and x.[Product Name] = y.[Product Name]) 
GROUP BY x.[Product Name], x.[Unit Price] 
ORDER BY x.[Unit Price] DESC, x.[Product Name] DESC;

解决方案修改自学生的排名 -Sql Compact Finding rank of the student -Sql Compact

【讨论】:

+1:干得好,很好找。我更新了答案以包含 ANSI-92 JOIN 版本;您发布的是 ANSI-89 连接语法。【参考方案2】:

用途:

  SELECT x.[Product Name], x.[Unit Price], COUNT(y.[Unit Price]) AS Rank 
    FROM Products x
    JOIN Products y ON x.[Unit Price] < y.[Unit Price] 
                  OR (    x.[Unit Price]=y.[Unit Price] 
                      AND x.[Product Name] = y.[Product Name]) 
GROUP BY x.[Product Name], x.[Unit Price] 
ORDER BY x.[Unit Price] DESC, x.[Product Name] DESC;

以前:

SELECT y.id,
       (SELECT COUNT(*)
         FROM TABLE x
        WHERE x.id <= y.id) AS rank
  FROM TABLE y

【讨论】:

不工作。 "解析查询时出错。[Token line number = 2,Token line offset = 9,Token in error = SELECT]"

以上是关于如何在 Sql Server Compact Edition SELECT 语句中复制 Rank 函数?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Sql Server Compact Edition SELECT 语句中复制 Rank 函数?

如何部署 SQL Server Compact Edition 4.0?

如何在 SQL Server Compact Edition 中重命名表?

如何在没有 Linq to SQL 的情况下在 Windows Phone 中使用 SQL Server Compact

在 SQL Server Compact 中返回标识

如何将 SQL Server Compact 3.5 与实体框架一起使用