したがって、テーブルがあり、レコード内の1つのフィールドから、別のフィールドで最大のDateTime()値を持ち、さらに別のフィールドが特定の値に等しい値を取得したいと思います。
データ例:
Balance Created MeterNumber
7924.252 02/02/2010 10:31:48 AM 2743800
7924.243 02/02/2010 11:01:37 AM 2743876
7924.227 02/02/2010 03:55:50 PM 2743876
特定のメーター番号に対して作成された日時が最大のレコードのバランスを取得したいと思います。VFP 7では、次を使用できます。
SELECT a.balance ,MAX(a.created) FROM MyTable a WHERE a.meternumber = '2743876'
ただし、ASP.NETページで使用しているVFP v8.0 OleDbドライバーでは、SELECTにリストされている非集計フィールドをそれぞれリストするGROUPBYが必要であるというVFP8に準拠する必要があります。GROUP BY a.balance
これにより、クエリに追加した場合、各残高のレコードが返されます。
はい、発行SET ENGINEBEHAVIOR 70
できますが、以前のバージョンに戻さなくてもこれを実行できるかどうかを知りたいですか?
編集 私はFrankPerezクエリを機能させましたが、SQLIN句のDateTimeフィールドをCharacterに変換した後でのみです。TTOC()関数によるDateTimeフィールドのラッピングに注意してください。
SELECT ;
MyTable.created, ;
MyTable.balance ;
FROM ;
MyTable ;
WHERE ;
( MyTable.meternumber = '2743876' ) ;
AND ( TTOC(MyTable.created) IN (SELECT TTOC(MAX(created)) FROM MyTable WHERE (meternumber = '2743876')) ) ;