最も古い日付を含むレコードを検索する

注: 最新のヘルプ コンテンツをできるだけ早く、お客様がお使いの言語で提供したいと考えております。 このページは、自動翻訳によって翻訳されているため、文章校正のエラーや不正確な情報が含まれている可能性があります。 私たちの目的は、このコンテンツがお客様の役に立つようにすることです。 お客様にとって役立つ情報であったかどうかを、このページの下部でお知らせください。 簡単に参照できるように、こちらに英語の記事があります。

この記事では、トップ値クエリと合計クエリを使用して、一連のレコードで最も新しい日付または最も古い日付を検索する方法について説明します。 これにより、お客様が注文を最後に発注したときや、営業に最適な5四半期の四半期など、さまざまなビジネス上の質問に答えることができます。

この記事の内容

概要

フォローするサンプルデータと例を準備する

最も新しい日付を検索する

レコードグループに対して最も近い日付を見つける

概要

トップ値クエリを使用して、データの順位付けと、上位にランクされている項目の確認を行うことができます。 トップ値クエリは、web サイトで最も人気が高い5ページのように、結果の一番上から指定した数値またはパーセントを返す選択クエリです。 トップ値クエリは、任意の種類の値に対して使用できます。数値である必要はありません。

ランク付けする前にデータをグループ化または集計する場合は、トップ値クエリを使用する必要はありません。 たとえば、会社の活動対象となっている都市ごとに、特定の日付における販売に関する数値を調べる必要があるとします。 この場合、都市がカテゴリとなり、都市ごとのデータを取得する必要があるため、集計クエリを使用します。

トップ値クエリを使用して、テーブルまたはレコードのグループで最新の日付または最も古い日付を含むレコードを検索すると、次のようなさまざまなビジネスの質問に答えることができます。

  • 最近最も多くの販売を行っていたのは誰ですか。

  • 前回得意先から注文があったのはいつか。

  • チームの次の3人の誕生日はいつですか?

トップ値クエリを作成するには、まず選択クエリを作成します。 次に、自分の質問に従って、上位と下位のどちらを探しているかにかかわらず、データを並べ替えます。 データをグループ化または集計する必要がある場合は、選択クエリを集計クエリに変換します。 [最大値] や [最小値]、[最初] または [最後] などの集計関数を使用して、最も早い日付または最も新しい日付を返すことができます。

この記事では、使用する日付の値に日付/時刻データ型が含まれていることを前提としています。 日付型の値がテキストフィールドにある場合は、となります。

トップ値クエリの代わりにフィルターを使用することを検討する

通常は、特定の日付を考慮している場合は、フィルターを使用することをお勧めします。 トップ値クエリを作成するか、またはフィルターを適用するかについては、次の基準を考慮します。

  • 日付が一致するすべてのレコード、または特定の日付より前または後のレコードを返す場合は、フィルターを使用します。 たとえば、4 ~ 7 月の間に売り上げがあった日付を確認するには、フィルターを適用します。

  • フィールドで最新の日付または最も新しい日付を持つ指定された量のレコードを返す場合、正確な日付値がわからない場合や、必要ない場合は、トップ値クエリを作成します。 たとえば、最高で5つの四半期を表示するには、トップ値クエリを使用します。

フィルターの作成と使用の詳細については、「フィルターを適用してAccess データベースのレコードを選択する」を参照してください。

ページの先頭へ

フォローするサンプルデータと例を準備する

この記事の手順では、次のサンプルテーブルのデータを使用します。

従業員テーブル   

LastName

最初

Address

市区町村

CountryOrR egion

誕生 日付

採用 日付

川井

保美

東京都

調布市

USA

1968 年 2 月 5 日

1994 年 6 月 10 日

山本

浩平

神奈川県

川崎市

USA

1957 年 5 月 22 日

1996 年 11 月 22 日

山水

友野

3122県宇都宮 Ave S.W.

青梅市

USA

1960 年 11 月 11 日

2000 年 3 月 11 日

宮西

君彦

千葉県

松戸市

日本

1964 年 3 月 22 日

1998 年 6 月 22 日

藤巻

陽子

埼玉県

さいたま市

日本

1972 年 6 月 5 日

2002 年 1 月 5 日

小林

昌子

東京都

青梅市

USA

1970 年 1 月 23 日

1999 年 4 月 23 日

河田

弘穀

神奈川県

横浜市

日本

1964 年 4 月 14 日

2004 年 10 月 14 日

西村

美智江

長野県

松本市

日本

1959 年 10 月 29 日

1997 年 3 月 29 日

EventType テーブル    

タイプ コード

イベント 種類

1

製品の販売開始

2

企業の催事

3

私的な催事

4

資金調達

5

見本市

6

講義

7

コンサート

8

展示会

9

街頭宣伝

"得意先" テーブル    

顧客 ID

会社

担当者

1

Contoso, Ltd. Graphic

今賀 千津

2

Tailspin Toys

Eiji Yasuda

3

Fabrikam

西詰 幸造

4

Wingtip Toys

福本 富美江

5

A. Datum

舟田 けい

6

Adventure Works

ブライアン バーク

7

Design Institute

藤島 昭英

8

School of Fine Art

田本 千賀

[イベント] テーブル    

イベント コード

イベント 種類

得意先

イベント 日付

価格

1

製品の販売開始

楽市食品株式会社

4/14/2011

¥1,000,000

2

企業の催事

肥後株式会社

4/21/2011

¥800,000

3

見本市

Tailspin Toys

5/1/2011

¥2,500,000

4

展示会

Graphic Design Institute

5/13/2011

¥450,000

5

見本市

楽市食品株式会社

5/14/2011

¥550,0000

6

コンサート

美術学校

5/23/2011

¥12,000

7

製品の販売開始

A. Datum

6/1/2011

¥15,000

8

製品の販売開始

Wingtip Toys

6/18/2011

¥21,000

9

資金調達

Adventure Works

6/22/2011

¥130,000

10

講義

東海道スーパー

6/25/2011

¥245,000

11

講義

Contoso, Ltd.

2011/7/4

¥380,000

年間

街頭宣伝

Graphic Design Institute

2011/7/4

¥550,000

注: 以下の手順では、[得意先] テーブルと [イベント タイプ] テーブルが、[イベント] テーブルとの 1 対多リレーションシップの "1" 側にあることを想定しています。 この場合、[イベント] テーブルは、[得意先コード] フィールドと [タイプ コード] フィールドを共有します。 次のセクションで説明する集計クエリは、このリレーションシップが定義されていないと動作しません。

サンプルデータを Excel ワークシートに貼り付ける

  1. Excel を起動します。 空のブックが開きます。

  2. ワークシートを挿入するには、SHIFT キーを押しながら F11 キーを押します (4 つ必要です)。

  3. 各サンプルテーブルから空のワークシートにデータをコピーします。 列見出し (1 行目) を含めます。

ワークシートからデータベース テーブルを作成する

  1. 列見出しを含め、最初のワークシートのデータを選択します。

  2. ナビゲーションウィンドウを右クリックし、[貼り付け] をクリックします。

  3. [はい]をクリックして、最初の行に列見出しが含まれていることを確認します。

  4. 残りの各ワークシートについて、手順1-3 を繰り返します。

最も新しい日付を検索する

このセクションの手順では、サンプルデータを使用してトップ値クエリの作成プロセスを示します。

基本的なトップ値クエリを作成する

  1. [作成] タブの [クエリ] グループで [クエリ デザイン] をクリックします。

    [テーブルの表示] ダイアログ ボックスが表示されます。

  2. [社員] テーブルをダブルクリックし、[閉じる] をクリックします。

    サンプル データを使用する場合は、[社員] テーブルをクエリに追加します。

  3. クエリに使用するフィールドをデザイン グリッドに追加します。 それぞれのフィールドをダブルクリックするか、または [フィールド] 列の空白のセルにそれぞれのフィールドをドラッグ アンド ドロップします。

    サンプル テーブルを使う場合は、[姓]、[名]、[誕生日] の各フィールドを追加します。

  4. 上位または下位の値を含むフィールド (サンプル テーブルを使う場合は [誕生日] フィールド) 内で、[並べ替え] 行をクリックし、[昇順] または [降順] を選びます。

    降順の並べ替え順序を選んだ場合は最も新しい日付が返され、昇順の並べ替え順序を選んだ場合は最も古い日付が返されます。

    重要: [並べ替え] 行に値を設定する必要があるのは、日付を含むフィールドに対してだけです。 他のフィールドに対して並べ替え順序を指定してクエリを実行した場合は、必要な結果を得られません。

  5. [デザイン] タブの [ツール] で [すべて] ([トップ値] の一覧) の横にある下向き矢印をクリックし、表示するレコードの数を入力するか、一覧からオプションを選びます。

  6. [実行] ボタン イメージ をクリックしてクエリを実行し、データシート ビューに結果を表示します。

  7. クエリを "nextbirthdays" として保存します。

このようなトップ値クエリでは、最年長または最年少の社員などの基本的な質問の回答を得ることができます。 次の手順では、式やその他の抽出条件を使ってクエリの有効性と柔軟性を高める方法について説明します。 次の手順で示す抽出条件を使用すると、次に誕生日を迎える 3 人の社員が返されます。

抽出条件をクエリに追加する

これらの手順では、前の手順で作成したクエリを使用します。 別のトップ値クエリと共にフォローできますが、テキスト値ではなく、実際の日付/時刻データが含まれている必要があります。

ヒント:  このクエリの動作方法をより詳しく理解するには、各ステップでデザインビューとデータシートビューを切り替えます。 実際のクエリコードを表示する場合は、SQL ビューに切り替えます。 ビューを切り替えるには、クエリの上部にあるタブを右クリックし、目的のビューをクリックします。

  1. ナビゲーションウィンドウで、"nextbirthdays" クエリを右クリックし、[デザインビュー] をクリックします。

  2. クエリデザイングリッドの [生年月日] の右側にある列で、
    [当月の出生: DatePart] ("m"、[生年月日])の各列に入力します。
    この式は、 DatePart関数を使用して、月を生年月日から抽出します。

  3. クエリデザイングリッドの次の列に、次のように入力
    します:DayOfMonthBorn: datepart ("d", [生年月日])
    この式は、 datepart関数を使用して、誕生日から月の日付を抽出します。

  4. 入力した2つの式のそれぞれについて、[表示]行のチェックボックスをオフにします。

  5. 各式の [並べ替え] 行をクリックし、[昇順] を選びます。

  6. [誕生日] 列の [抽出条件] 行に、次の式
    を入力します:month ([誕生日]) または month ([誕生日]) = month (date ()) AND Day ([誕生日]) >Day (date ())
    This式の場合は、次のようになります。

    • month ( [誕生日]) > month (date ())では、各従業員の生年月日が未来の月にあることを指定します。

    • month ( [誕生日]) = month (date ()) And Day ([誕生日]) >Day (date ())は、誕生日が現在の月にある場合、誕生日が現在の日付よりも後であることを指定します。

      つまり、この式では、1月1日から現在の日付までの誕生日のレコードが除外されます。

      ヒント:  クエリの抽出条件式の例については、「クエリの抽出条件の例」をご覧ください。

  7. [デザイン] タブの [クエリの設定] グループで、[差出人] ボックスに「 3 」と入力します。

  8. [デザイン] タブの [結果] グループで、[実行] ボタン イメージ をクリックします。

注:  独自のデータを使用して独自のクエリを作成すると、指定したよりも多くのレコードが表示される場合があります。 上位の値の中にある値を共有する複数のレコードがデータに含まれている場合、必要以上のレコードを返すことになる場合でも、クエリによってそのようなレコードがすべて返されます。

ページの先頭へ

レコードグループに対して最も近い日付を見つける

集計クエリを使用して、グループに分類されるレコード (たとえば、市区町村別にグループ化されたイベント) の最も早い日付または最も遅い日付を検索します。 集計クエリは、集計関数 ( Group By MinMaxCountFirstLastなど)を使用して各出力フィールドの値を計算する選択クエリです。

分類に使用するフィールドを [グループ化] に、集計する値が含まれるフィールドを含めます。 他の出力フィールド (イベントの種類によってグループ化している場合は、ユーザーの名前) を含める場合は、これらのフィールドを使ってグループを作成します。結果が変更され、元の質問には応答しなくなります。 他のフィールドを使用して行にラベルを付けるには、集計クエリをソースとして使用する追加のクエリを作成し、そのクエリに追加のフィールドを追加します。

ヒント:  ステップでクエリを作成することは、より高度な質問に答えるための効果的な戦略です。 複雑なクエリの動作に問題がある場合は、より単純なクエリに分割することができるかどうかを検討してください。

集計クエリを作成する

この手順では、 Events サンプルテーブルEventType サンプルテーブルを使って、この質問に回答します。

concerts を除く、各イベントの種類の最新のイベントはいつですか。

  1. [作成] タブの [クエリ] グループで [クエリ デザイン] をクリックします。

  2. [テーブルの表示] ダイアログボックスで、[イベント] テーブルと [EventType] テーブルをダブルクリックします。
    各テーブルがクエリデザイナーの上部のセクションに表示されます。

  3. [テーブルの表示] ダイアログ ボックスを閉じます。

  4. eventtype テーブルの eventtype フィールドをダブルクリックし、Events テーブルから eventdate フィールドをダブルクリックして、クエリデザイングリッドにフィールドを追加します。

  5. クエリデザイングリッドで、[ EventType ] フィールドの [抽出条件] 行に「 <>Concert」と入力します。

    ヒント:  抽出条件式の例については、「クエリの抽出条件の例」を参照してください。

  6. [デザイン] タブの [表示/非表示] グループで [集計] をクリックします。

  7. クエリデザイングリッドで、eventdate フィールドの [集計] 行をクリックし、[最大値] をクリックします。

  8. [デザイン] タブの [結果] グループで [表示] をクリックし、[SQL ビュー] をクリックします。

  9. SQL ウィンドウでは、SELECT 句の末尾で as キーワードの後に、 maxofeventdate最新の "いいね!" に置き換えます。

  10. クエリを MostRecentEventByType として保存します。

2 番目のクエリを作成して関連データを追加する

この手順では、前の手順の MostRecentEventByType クエリを使用して、この質問に回答します。

各イベントタイプの最新のイベントで、顧客は誰を担当しましたか?

  1. [作成] タブの [クエリ] グループで [クエリ デザイン] をクリックします。

  2. [テーブルの表示] ダイアログボックスの [クエリ] タブで、MostRecentEventByType クエリをダブルクリックします。

  3. ダイアログボックスの [テーブル] タブで、[イベント] テーブルと [顧客] テーブルをダブルクリックします。

  4. クエリデザイナーで、次のフィールドをダブルクリックします。

    1. [イベント] テーブルで、[イベントのイベント] をダブルクリックします。

    2. MostRecentEventByType クエリで、[最近] をダブルクリックします。

    3. [得意先] テーブルの [会社] をダブルクリックします。

  5. クエリデザイングリッドの [イベントの種類] 列の [並べ替え] 行で、[昇順] を選びます。

  6. [デザイン] タブの [結果] グループで、[実行] をクリックします。

ページの先頭へ

Office のスキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×