2016-11-13 22 views
0

に他のフィールドに基づいて、次の下位番号を探す:私はMainNumberとMainTypeのために値を入れ私はこのようなデータを持つテーブルを持っているアクセス

MainID, MainNumber, MainType 
1  250   Hours 
2  500   Hours 
3  1000  Hours 
4  5000  Miles 
5  20000  Miles 

、私は下の次をプルする必要がありますそのMainTypeのMainNumber。

これは私が持っているコードです:

SQL = "SELECT T2.MainID, Max([t2.MainNumber]) AS PreviousCycle" 
SQL = SQL & " FROM tblMainType AS T1 LEFT JOIN tblMainType as T2 on T1.MainNumber > T2.MainNumber" 
SQL = SQL & " WHERE T1.mainType = '" & mType & "' AND T1.MainNumber = " & MainNumber 
SQL = SQL & " Group By T2.MainID;" 

奇妙なことに、それは時間ではなく、マイルのために働きますか?私のコードで何が間違っていますか?

+0

「うまくいきません」とは私たちにはあまり働きません。 – Gustav

答えて

0

次に高い番号を見つけるには、フィールドを降順でソートし、TOP 1という値を取ることにします。

Sql = "SELECT TOP 1 tblMainType.MainID, tblMainType.MainNumber " & _ 
     "FROM tblMainType " & _ 
     "WHERE (((tblMainType.MainNumber)< " & mType & ") AND ((tblMainType.MainType)='" & MainNumber & "')) " & _ 
     "ORDER BY tblMainType.MainNumber DESC;" 
0

私はこのようなクエリ期待:

SELECT TOP 1 MainID, MainNumber 
FROM tblMainType 
WHERE MainType = @MainType AND 
     MainNumber >= @MainNumber 
ORDER BY MainNumber DESC, MainId; 

@MainType@MainNumberは、あなたが入力した値です。

関連する問題