SQL Server CE - ROW_NUMBER - PullRequest
       16

SQL Server CE - ROW_NUMBER

3 голосов
/ 02 января 2012

Я не знаю, что не так с этим кодом, он дает мне ошибку на один день:

select row_number() over(order by s.title) as rowNumber, s.id 
from story as s

Определение таблицы:

id       bigint
title    nvarchar(100)
content  ntext

База данных: SQL Server Compact 4.0.8482.1

Ошибка:

Произошла ошибка при разборе запроса. [Номер строки токена = 1, смещение строки токена = 22, ошибка токена = больше]

Что я так далеко:

Я искал здесь в SO ту же проблему, но решение не применимо к моей, мне очень нужна функция row_number.

Ответы [ 3 ]

6 голосов
/ 02 января 2012

Как уже упоминал ErikEJ - ROW_NUMBER просто не существует в SQL Server Compact Edition - даже в самой новой версии 4.0.

Однако, если вы пытаетесь использовать ROW_NUMBER для вывода на страницуваши данные, SQL Server Compact Edition 4.0 поддерживает подкачки на стороне сервера с помощью новых ключевых слов, которые также будут отображаться в SQL Server 2012 - см. этот блог здесь для всех деталей.

Вы должны быть в состоянии написать что-то вроде:

SELECT (columns)
FROM Story s
ORDER BY Title
OFFSET 20 ROWS 
FETCH NEXT 10 ROWS ONLY;
3 голосов
/ 23 июля 2015

SQL Server CE не имеет номера строки. и он также не может выполнять скалярные подзапросы, которые также могут быть использованы для получения числового значения.

но вы можете делать неравные объединения ... считая объединения.

это даст вам число.

select count(r.id) as Row_Number, s.id 
from story as s
    inner join story as r
        on s.id >= r.id
group by s.id
2 голосов
/ 02 января 2012

В SQL Server Compact отсутствует row_number - можете ли вы использовать IDENTITY (не уверен, что вы пытаетесь сделать)?

...