0

Access 2010 を使用しており、特定の方法で順序付けされたクエリのランクまたは行番号フィールドを作成しようとしています。試してみRank: DCount("id","[Query1]","id <= " & [id])ましたが、順序が ID プライマリ キーではないため、クエリの並べ替えは無視されます。

4

2 に答える 2

1

私はあなたの並べ替えロジックを見てきましたが、追加のクエリ (Temp) を作成することで、それに基づいてランクを生成できたようです。列にはすべての並べ替え関数のサブプロダクトが連結されています。このクエリのコードは次のようになります。

SELECT Table1.Code1, 
    Len(Mid([Code1] & "",1,IIf(InStr([Code1] & "","*")>0,InStr([Code1] & "","*")-1,Len([Table1].[Code1] & "")))) 
    & Mid([Code1] & "",1,IIf(InStr([Code1] & "","*")>0,InStr([Code1] & "","*")-1,Len([Table1].[Code1] & ""))) & 
    Val(Mid([Code1] & "",InStr([Code1] & "","*")+1)) & 
    CStr(Val(Mid([Code1] & "",InStr([Code1] & "","*")+1))) AS OrderCode1
FROM Table1
ORDER BY Len(Mid([Code1] & "",1,IIf(InStr([Code1] & "","*")>0,InStr([Code1] & "","*")-1,Len([Table1].[Code1] & "")))), 
    Mid([Code1] & "",1,IIf(InStr([Code1] & "","*")>0,InStr([Code1] & "","*")-1,Len([Table1].[Code1] & ""))), 
    Val(Mid([Code1] & "",InStr([Code1] & "","*")+1)), 
    CStr(Val(Mid([Code1] & "",InStr([Code1] & "","*")+1))), Table1.Code1;

その後、この追加のクエリに対してクエリを作成DCountし、パラメータに「OrderCode1」列を指定して関数を使用するとWHERE、連続したランクが得られるはずです。このようなもの:

SELECT Temp.Code1, DCount("Code1","[Temp]","OrderCode1 <= '" & [OrderCode1] & "'") AS Rank
FROM Temp;

これに対する解決策がまだ必要な場合は、それが機能するかどうかを確認できます。

于 2012-09-22T18:44:10.683 に答える
-1

お役に立てれば

SELECT ROW_NUMBER() OVER (ORDER BY OrderID) AS RowNo, OrderID FROM Orders
于 2012-09-22T23:21:11.153 に答える