1

Windows 7 と Windows XPが混在する環境でOffice 10のAccessを使用しています。

リストから従業員の現在の住所を選択できるようにする必要があります。私が抱えている問題は、アドレスdatefrom過去未来、またはnullである可能性があることです。

future を削除することは、基準では明らかに簡単です。つまり、WHERE datefrom <=date()

私が抱えている問題は、住所データの最初のインポートで、ほとんどの住所にこの情報がなかったため、フィールドが null になっていることです。データの例を以下に示します: (日付形式はdd/mm/yyyy)

ID  EmployeeID  Postcode  DateFrom
1   1           AB12 3CD  [null]
2   2           GH12 5RF  [null]
3   1           CD34 5EF  10/03/2012
4   3           HA25 3PO  [null]
5   3           HA4  7RT  04/06/2012]
6   3           DB43 5YU  12/11/2011]

私の望ましい出力は次のようになります: (従業員の順序は重要ではありません)

ID  EmployeeID  Postcode  DateFrom
2   2           GH12 5RF  [null]
3   1           CD34 5EF  10/03/2012
5   3           HA4  7RT  04/06/2012

DateFrom DESC以下のようにリストを並べ替える並べ替えを試みました。

ID  EmployeeID  Postcode  DateFrom
3   1           CD34 5EF  10/03/2012
1   1           AB12 3CD  [null]
2   2           GH12 5RF  [null]
5   3           HA4  7RT  04/06/2012
6   3           DB43 5YU  12/11/2011
4   3           HA25 3PO  [null]

したがって、各従業員の最初の結果を取得できれば問題ありません。ただし、 、 、 などの SQL を実行しようとしました (そして失敗しました) が、どこに到達できないようです。DISTINCTfirst()GROUP BY

おそらく簡単で明白な答えが見えないので、どんな助けでも大歓迎です。

4

3 に答える 3

0

nullのような設定された日付になるように値を単純に更新できます1900-01-01か?

于 2012-07-24T09:38:25.167 に答える
0

次のように order by を使用します。

ORDER BY (CASE WHEN [DateFrom] IS NULL THEN 1 ELSE 0 END) DESC, 
         [DateFrom] DESC

この投稿から答えを見つけました。まずは検索してみてください。

于 2012-07-23T09:40:32.390 に答える
0

どうですか:

SELECT Adr.ID, Adr.EmployeeID, Adr.Postcode, Adr.DateFrom
FROM Adr
WHERE (((Adr.ID) In 
  (SELECT Top 1 ID 
   FROM adr b 
   WHERE b.EmployeeID=Adr.EmployeeID 
   ORDER BY DateFrom DESC )));

上記はクエリ設計画面で作成したものなので、括弧の半分は不要ですが、クエリ設計画面を使用している場合はそのままでも構いません。

于 2012-07-23T09:56:13.313 に答える