Как бы я продублировал функцию Rank в инструкции SELECT Sql Server Compact Edition? - PullRequest
1 голос
/ 12 июня 2010

Не похоже, что SQL Server Compact Edition поддерживает функцию RANK ().(См. Функции (SQL Server Compact Edition) в http://msdn.microsoft.com/en-us/library/ms174077(SQL.90).aspx).

Как мне дублировать функцию RANK () в SQL Server Compact Edition Оператор SELECT.

(Пожалуйста, используйте Northwind.sdf для любого примера операторов выбора, поскольку он является единственным, который я могу открыть в SQL Server 2005 Management Studio.)

Ответы [ 2 ]

1 голос
/ 12 июня 2010
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 на Нахождение ранга студента -Sql Compact

1 голос
/ 12 июня 2010

Использование:

  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
...