web-dev-qa-db-ja.com

SQLのROW_NUMBERのようなAccessクエリで行番号を表示する方法

Microsoft Accessにテーブルがあり、SQL ServerでROW_NUMBER()関数を使用するのと同じように、Accessで選択クエリを使用して列に行番号を表示します。

SQL Serverでは、次のクエリを使用できます。

SELECT ROW_NUMBER() OVER (ORDER BY tblUser.UserID) AS NoRow, * 
FROM tblUser

アクセスで同じクエリを使用していますが、エラーが発生します。

手伝って頂けますか?

14
Fauzi88

このクエリを試すことができます:

Select A.*, (select count(*) from Table1 where A.ID>=ID) as RowNo
from Table1 as A
order by A.ID
20
JokoSumanto

MS Accessでこれを行う1つの方法は、サブクエリを使用することですが、同じ機能のようなものはありません。

SELECT a.ID, 
       a.AText, 
       (SELECT Count(ID) 
        FROM table1 b WHERE b.ID <= a.ID 
        AND b.AText Like "*a*") AS RowNo
FROM Table1 AS a
WHERE a.AText Like "*a*"
ORDER BY a.ID;
3
Fionnuala

VB関数:

Dim m_RowNr(3) as Variant
'
Function RowNr(ByVal strQName As String, ByVal vUniqValue) As Long
' m_RowNr(3)
' 0 - Nr
' 1 - Query Name
' 2 - last date_time
' 3 - UniqValue

If Not m_RowNr(1) = strQName Then
  m_RowNr(0) = 1
  m_RowNr(1) = strQName
ElseIf DateDiff("s", m_RowNr(2), Now) > 9 Then
  m_RowNr(0) = 1
ElseIf Not m_RowNr(3) = vUniqValue Then
  m_RowNr(0) = m_RowNr(0) + 1
End If

m_RowNr(2) = Now
m_RowNr(3) = vUniqValue
RowNr = m_RowNr(0)

End Function

使用法(ソートオプションなし):

SELECT RowNr('title_of_query_or_any_unique_text',A.id) as Nr,A.*
From table A
Order By A.id

ソートが必要な場合、または複数のテーブルを結合する場合は、中間テーブルを作成します。

 SELECT RowNr('title_of_query_or_any_unique_text',A.id) as Nr,A.*
 INTO table_with_Nr
 From table A
 Order By A.id
1
MartiniB