ACCESSクエリーで経過日数を算出する方法

このQ&Aのポイント
  • ACCESSクエリーを使用して経過日数を算出する方法について説明します。
  • エクセルとの比較による経過日数の誤差についても触れます。
  • パラメーターの入力方法やクエリーの実行結果についても紹介します。
回答を見る
  • ベストアンサー

ACCESSクエリーについて(条件抽出等3差分)

こちらのクエリーを活用して経過日数を算出しているのですが、 http://okwave.jp/qa/q8769213.html (SQL構文) SELECT テーブル.ID, Max(テーブル.利用日) AS 直近利用日, Max(テーブル.利用回数) AS 利用回数, Sum(テーブル.利用金額) AS 利用金額合計, Min(DateDiff("d",[利用日],DateValue([yyyymmdd]))) AS 経過日数 FROM テーブル GROUP BY テーブル.ID; パラメータのyyyymmddには「2013/12/10」のように、区切り記号付きの日付を入力。 エクセル上で同じ日付-日付の経過日数でみると、エクセルの方が1多いのですが、これはエクセルが誤りでしょうか。 例 クエリー: 2014/09/27でパラメーターを指定  2014/05/13 が直近日付 = 137 例 エクセル: 2014/09/27とセルに入力 そこから右記のセルを引く 2014/05/13 が直近日付 = 136

質問者が選んだベストアンサー

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

> エクセルの方が1多いのですが、エクセルが誤りでしょうか。 いいえ。「関数の仕様が異なる」です。fの数も違うし。

参考URL:
http://www.office-kitami.com/lesson/afunction/datediff.html
jordan232011
質問者

補足

解決策ありますでしょうか?? xls.と同じ定義にしたいのですが。。。

関連するQ&A

  • ACCESSとxls.で相違する差分結果が出る

    こちらのクエリーを活用して経過日数を算出しているのですが、 http://okwave.jp/qa/q8769213.html (SQL構文) SELECT テーブル.ID, Max(テーブル.利用日) AS 直近利用日, Max(テーブル.利用回数) AS 利用回数, Sum(テーブル.利用金額) AS 利用金額合計, Min(DateDiff("d",[利用日],DateValue([yyyymmdd]))) AS 経過日数 FROM テーブル GROUP BY テーブル.ID; パラメータのyyyymmddには「2013/12/10」のように、区切り記号付きの日付を入力。 エクセル上で同じ日付-日付の経過日数でみると、エクセルの方が1多いのですが、これはエクセルが誤りでしょうか。 例 クエリー: 2014/09/27でパラメーターを指定  2014/05/13 が直近日付 = 137 例 エクセル: 2014/09/27とセルに入力 そこから右記のセルを引く 2014/05/13 が直近日付 = 136 No.1 回答者:bin-chan回答日時:2014/09/26 22:11 > エクセルの方が1多いのですが、エクセルが誤りでしょうか。 いいえ。「関数の仕様が異なる」です。fの数も違うし。 参考URL:http://www.office-kitami.com/lesson/afunction/datediff.html ↑↑↑↑↑ 原因はわかったのですが、xls.と同じ定義にはできないのでしょうか。 他の方は、このような場合、どのように対処されているのでしょうか。。。

  • ACCESSとEXLの算出で差分が出る

    こちらのクエリーを活用して経過日数を算出しているのですが、 http://okwave.jp/qa/q8769213.html (SQL構文) SELECT テーブル.ID, Max(テーブル.利用日) AS 直近利用日, Max(テーブル.利用回数) AS 利用回数, Sum(テーブル.利用金額) AS 利用金額合計, Min(DateDiff("d",[利用日],DateValue([yyyymmdd]))) AS 経過日数 FROM テーブル GROUP BY テーブル.ID; パラメータのyyyymmddには「2013/12/10」のように、区切り記号付きの日付を入力。 エクセル上で同じ日付-日付の経過日数でみると、エクセルの方が1多いのですが、これはエクセルが誤りでしょうか。 例 クエリー: 2014/09/27でパラメーターを指定  2014/05/13 が直近日付 = 137 例 エクセル: 2014/09/27とセルに入力 そこから右記のセルを引く 2014/05/13 が直近日付 = 136 No.1 回答者:bin-chan回答日時:2014/09/26 22:11 > エクセルの方が1多いのですが、エクセルが誤りでしょうか。 いいえ。「関数の仕様が異なる」です。fの数も違うし。 参考URL:http://www.office-kitami.com/lesson/afunction/da … ↑↑↑↑↑ 原因はわかったのですが、xls.と同じ定義にはできないのでしょうか。 他の方は、このような場合、どのように対処されているのでしょうか。。。 現在のSQL構文に、参考URLにある、 IIf(Format(Date(),"mmdd")<Format([経過日数],"mmdd"),DateDiff("yyyy",[経過日数],Date())-1,DateDiff("yyyy",[経過日数],Date())) の要素を組み込むことはできないのでしょうか。それとも新たに別列で組み込まなければならないでしょうか。

  • ACCESSクエリーについて(条件抽出等2)

    以下のACCCESSテーブルデータがあります。 ID    利用日 利用回数 利用金額 c0096 2013/10/02 1   2000 c0096 2013/10/04 2   3000 c0096 2013/10/11 3   4000 c0096 2013/11/11 4   2200 c0096 2013/11/22 5   1000 c0096 2013/12/02 6 4000 c0135 2013/12/03 1 2100 c013 52013/12/07 2 4100 これをIDがかぶっているものについては1行とし、 かつ以下、 ・直近利用日 ・利用回数・・・同一ID行数で判断 ・利用金額・・・累積額 ・経過日数・・・yyyymmdd - 直近利用日 ※ yyyymmdd はクエリー実行時に入力する の条件でクエリー抽出したいのですが、可能でしょうか。 (SQL使用を希望) ※難しければ経過日数の箇所はなくても構わないです。 イメージ ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ yyyymmdd を パラメーターで、 2013/12/10 とした場合 ID 直近利用日 利用回数 利用金額   経過日数 c0096 2013/12/02 6 16200     8 c0135 2013/12/07 2 6200 3 上記となる。 またテーブルについて、上記以外にも列があった場合、基本全列を 表示させるという指示は組めますでしょうか。 お手数をおかけしますmm 関連する内容 http://okwave.jp/qa/q8768143.html

  • ACCESSクエリーについて(条件抽出等)

    以下のACCCESSテーブルデータがあります。 ID     利用日 利用回数 利用金額 c0096 2013/10/02 1  2000 c0096 2013/10/04 2  3000 c0096 2013/10/11 3  4000 c0096 2013/11/11 4  2200 c0096 2013/11/22 5  1000 c0096 2013/12/02 6 4000 c0135 2013/12/03 1 2100 c0135 2013/12/07 2 4100 これをIDがかぶっているものについては1行とし、 かつ以下、 ・直近利用日 ・利用回数・・・同一ID行数で判断 ・利用金額・・・累積額 ・経過日数・・・直近利用日 - 一番古い利用日 の条件でクエリー抽出したいのですが、可能でしょうか。 (SQL使用を希望) ※難しければ経過日数の箇所はなくても構わないです。 イメージ ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ID 直近利用日 利用回数 利用金額  経過日数 c0096 2013/12/02 6 16200    61 c0135 2013/12/07 2 6200 4

  • ACCESSクエリーについて(条件抽出等3)

    http://okwave.jp/qa/q8769213.html について、 SELECT ID, Max(Q1.利用日) AS 利用日, Max(Q1.利用回数) AS 利用回数, Sum(Q1.利用金額) AS 利用金額, Max(Q1.利用日)-Min(Q1.利用日) AS 経過日数 FROM RFMデータソース AS Q1 GROUP BY ID; 上記で得られる以外の列もテーブルであった場合、それを表示させることはできますでしょうか。 (デザインビューで追加すると、重複行ができてしまう) お手数をおかけしますmm

  • ACCESS フォームで入力した日付をクエリで読み

    ACCESS フォームで入力した日付をクエリで読み替えたい ACCESS フォームで入力した日付をクエリで使用しているテーブルの書式に変換したい フォーム テキスト名:日付にyyyymmdd で入力します クエリ テキスト名:日付はパラメータとして使用しています クエリ内で使用しているテーブルの日付書式は 日付:yyyy/mm/ddです パラメータは 「日付始」と「日付終」の2箇所のテキストに入力されたデータを使用しています。以下がパラメータです。 Between [Forms]![フォーム]![日付始] and [Forms]![フォーム]![日付終] フォームのテキストボックスにyyyymmddと入力してもクエリでエラーが出ることない パラメータを日付に設定したいのですがどうしたらよいでしょうか? ちなみに、以下の式を入れたらエラーです。 Between CDate(Format([Forms]![フォーム]![日付始],"yyyy/mm/dd")) and CDate(Format([Forms]![フォーム]![日付始],"yyyy/mm/dd")) と入力しましたところ、、、、「式が複雑すぎるか、、、」のエラーメッセージが出てしまいました。 どなたか助けてください。お願い致します。

  • Accessで日付を抽出するパラメータを設定したい

    Accessのクエリで日付に対して与えているパラメータがあります。 パラメータで指定したいデータはフォームのテキストに入力した日の23:59:59 以降の日付を抽出したい。 入力:数値8桁(yyyymmdd)で行う 抽出先テーブルのデータ:yyyy/mm/dd hh:mm:ss 現在以下のパラメータを日付に対して与えると「式が複雑すぎます、、、」と注意されてしまいます。 指定日の23:59:59を抽出範囲として指定するのはどうしたらよいでしょうか? 入力値の変換も含めて、以下のパラメータを入れています。 「+"23:59:59"」をとればエラーは出ません。 <=IIF(Len([Forms]![フォーム名]![日付])=8,CDate(Format([Forms]![フォーム名]![日付],"@@@@/@@/@@")),#9999/1/01#)+"23:59:59" どなたか、お助け下さい。よろしくお願い致します。

  • Accessのクエリについて

    お世話になります。 テーブル内の[出荷日]というフィールドに対して、 「出荷日1ヶ月前のレコード」を抽出しようと考えてます。 クエリ実行時に「日付」をパラメータ入力して、 その日付より1ヶ月前の出荷日のデータを出したいのです。 フィールドに対する抽出条件として、 <=[日付]-30 という条件を指定して実行したのですが、うまく いきませんでした。 どのように設定すればよいでしょうか? ご教授よろしくお願いします。

  • アクセスのクエリでの抽出条件

    CD 都市 更新日付 001 秋田 2008/01 002 青森 2008/03 003 秋田 2008/03 004 青森 2008/02 005 札幌 2008/02 上のようなデータがあり、更新日が最新のデータで下のように抽出したいのですが、グループ化ではなく、クエリではどのように抽出条件をいればいいのでしょうか?       003 秋田 2008/03       002 青森 2008/03       005 札幌 2008/02 エクセルに落としDMAX等使用してみましたがうまくいきません。 何かご指導ありましたら宜しくお願い致します。

  • Accessでデータ追加のクエリについて

    「コードNO」(13桁数値)「開始日付」(yyyymmdd形式の数値)「変更日付」(yyyymmdd形式の数値)「終了日付」(yyyymmdd形式の数値)の4つのデータから成るCSVファイルがありまして、そこに毎月同形式の追加のファイルが発生するのです。開始日付はそれぞれで、変更日付・終了日付は初期値が「99991231」です。新規のコードNoについては追加して、重複するものは上書きしていきたいのです。 私はAccess2000を使ってやってみました。テーブルデータにして追加クエリで追加した後、選択クエリでグループ化を使い、「コードNo」をグループ化、「開始日付」はずっと変わらないので取りあえず「最小」、終了は1度しか変わらないのでやはり「最小」、問題は「変更日付」です。度々変わって行くので初期値を除く最大、又は上位2番目の数値というようにしたいのです。そんな設定の仕方が可能でしょうか? まったく別のやり方でも、Accessでなくても(EXCELなら97)良いのでアドバイスをお待ちしてます。

専門家に質問してみよう