13

私は常にSQLサーバーでこのクエリを使用して、テーブルの行番号を取得します。

SELECT *
FROM   (SELECT *,
               Row_number()
                 OVER(
                   ORDER BY [myidentitycolumn]) RowID
        FROM   mytable) sub
WHERE  rowid = 15  

現在、Access 2010 で作業していますが、これは機能していないようです。Access でこのクエリに代わるものはありますか?

4

7 に答える 7

1

チームごとにx点の最高の結果が必要でした。

同点の結果が存在する場合、ランキングはこの問題を解決しません。だから私はrecordnumber

Access で VBA 関数を作成しrecordnumberて、ID の変更時にリセットされる を作成しました。

recordnumber <= xチームごとにポイントを取得する場所を指定して、このクエリをクエリする必要があります。

NB Access はレコード番号を変更します

  1. レコード番号でフィルタリングされたクエリをクエリするとき
  2. 一部の結果を除外する場合
  3. 並び順を変えると

それは私が思っていたことではありません。

一時テーブルを使用し、recordnumbersキーまたは追加のフィールドをテーブルに保存することで、これを解決しました。

SELECT ID, Points, RecordNumberOffId([ID}) AS Recordnumber
FROM Team ORDER BY ID ASC, Points DESC;

呼び出し間で記憶するために 3 つのモジュール レベル変数を使用します。

Dim PreviousID As Long
Dim PreviousRecordNumber As Long
Dim TimeLastID As Date

Public Function RecordNumberOffID(ID As Long) As Long 
'ID is sortgroup identity
'Reset if last call longer dan nn seconds in the past
If Time() - TimeLastID > 0.0003 Then '0,000277778 = 1 second
    PreviousID = 0
    PreviousRecordNumber = 0
End If
If ID <> PreviousID Then
    PreviousRecordNumber = 0
    PreviousID = ID
End If
PreviousRecordNumber = PreviousRecordNumber + 1
RecordNumberOffID = PreviousRecordNumber
TimeLastID = Time()
End Function
于 2016-03-15T16:56:31.870 に答える
-1

遅れるかもしれません。テーブルにオートナンバー型の新しいフィールド ID を追加するだけです。これにより一意の ID が生成され、Access でも利用できます

于 2015-10-27T20:55:10.983 に答える