2012-01-02 10 views
3

のSQL Server CE - 私はそれが今日のために私にエラーを与えて、このコードと間違っているかわからないROW_NUMBER

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のをコンパクト4.0.8482.1

エラー:

There was an error parsing the query. [ Token line number = 1,Token line offset = 22,Token in error = over ]

私が今までに行ったこと:

私はここで同じ問題を検索しましたが、解決策は私には当てはまりません。私はrow_number関数がひどく機能する必要があります。

答えて

6

ErikEJは既に言及したように、ROW_NUMBERはSQL Server Compact Editionには存在しません。最新の4.0バージョンではありません。

ROW_NUMBERを使用してデータをページする場合、SQL Server Compact Edition 4.0はSQL Server 2012にも表示される新しいキーワードによるサーバーサイドページングをサポートしています。詳細はthis blog post hereを参照してください。 。

SELECT (columns) 
FROM Story s 
ORDER BY Title 
OFFSET 20 ROWS 
FETCH NEXT 10 ROWS ONLY; 
+0

そうです、ページネーションを作成しようとしています...私はオフセットを取ってみましたが、昨日エラーが発生しましたので、うまくいかないと思いました。私はもう一度それを試し、あなたにすぐにお知らせします。 – dpp

+0

それは動作します!私の古いクエリ 'offset(@ 0-1)* @ 1 rows fetch next @ 1 rows only'の代わりにこの' offset @ 0 rows fetch next @ 1 rows only'を使って、私のアプリで '@ 0'を計算しました。 SQL CEでも計算が許可されていないようですね。 SQL CEは '(@ 0-1)* @ 1'をサブクエリと見なしますか? – dpp

2

SQL Server Compactにはrow_numberはありません - IDENTITYを使用できますか(あなたが何をしようとしているかわかりません)?

+0

私はページネーションを作成しようとしていますが、エラーが発生しました。デバッグ時にこのセクションに出くわしました。問題のように思われます。私はmarc_sの解決策を試してみます。 – dpp

2

のSQL Server CEは、ROW_NUMBERを持っていない:

あなたのような何かを書くことができるはずです。 rownumberを取得するためにも使用できるスカラーサブクエリは実行できません。

ただし、不等号結合を行うことができます...結合をカウントします。

これはあなたにrownumberを与えるでしょう。

+0

優秀あなたはこのソリューションにどうやって来たのですか?私は不平等結合についての推論に従うことができません – kuklei

関連する問題