次の方法で共有

経過連続日数を求めたい

Anonymous
2017-06-23T07:49:11+00:00

投与日付   投与日数

2017/5/1     1

2017/5/2     2

2017/5/3     3

2017/5/4     4

2017/5/5     5

2017/5/6     6

2017/5/15     1

2017/5/16                2

2017/5/17               3

2017/5/20                1

薬の連続した投与日数を求めたいと思っています。

上記のようなクエリを作りたいのですが、式が思い浮かびません。

ご教授いただけると助かります。

Microsoft 365 と Office | アクセス | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

4 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2017-06-26T00:50:36+00:00

    かなり回りくどい方法ですが。

    共通MDL


    Dim intcount As Integer '値保持のため

    Function Numbers(intRen As Integer) As Integer

        If intRen = 0 Then

            intcount = 1

        Else

            intcount = intcount + 1

        End If

            Numbers = intcount

    End Function


    SQL

    YMDに投与日付

    SQL1


    SELECT a.YMD, iif(b.YMD is null ,0,1) AS ren

    FROM (SELECT T_TEST.ID, T_TEST.YMD, DateAdd("d",-1,[YMD]) AS mYMD

    FROM T_TEST)  AS a LEFT JOIN T_TEST AS b ON a.mYMD = b.YMD

    ORDER BY a.YMD;


    SQL2


    SELECT YMD, Numbers(ren) AS ren2

    FROM SQL1

    ORDER BY YMD;


    2017/05/01 1
    2017/05/02 2
    2017/05/03 3
    2017/05/04 4
    2017/05/05 5
    2017/05/06 6
    2017/05/15 1
    2017/05/16 2
    2017/05/17 3
    2017/05/20 1

    この回答は役に立ちましたか?

    2 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  2. Makapu 92,110 評価のポイント ボランティア モデレーター
    2017-06-24T01:54:39+00:00

    こんにちは。

    こういうのはどうでしょうか。

    始めに、テーブルに[ID]フィールドをオートナンバーで追加します。

    ■テーブル名:[T投与]

    [ID]: オートナンバー型

    [投与日数]:日付/時刻型

    次に、クエリで使用する関数を作ります。

    ALTキー + [F11]を同時に押してVBEの画面を起動し、[挿入] > [標準モジュール]

    以下のコードをコピーして貼り付けます。

    Public Function DateCnt(WkID As Long, WkDate As Date) As Long

    '*** 一つ前の日付との差が1日の場合は1加算し、それ以外の場合は1をセットする

    Static iCnt As Long

        If Nz(DateDiff("d", (DLookup("投与日付", "T投与", "[ID]= " & WkID - 1)), WkDate), 0) <> 1 Then

            iCnt = 1

        Else

            iCnt = iCnt + 1

        End If    

        DateCnt = iCnt

    End Function

    関数が出来たら、[T投与]テーブルからクエリを作成します。

    投与日数: DateCnt([ID],[投与日付])

    ID:昇順

    <結果>

    この回答は役に立ちましたか?

    2 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  3. Anonymous
    2017-06-27T02:05:41+00:00

    ご返信ありがとうございます。

    大変高度なことをされているのだと思われます。

    ひとつずつ勉強ですね。

    こちらも参考にさせていただきます。

    ありがとうございます。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. Anonymous
    2017-06-27T02:04:13+00:00

    ご返信ありがとうございます。

    リンクテーブルを使っているので、テーブルの加工はできないのですが。

    テーブル作成クエリを使って、こちらを参考に挑戦したいと思います。

    このような返答を見ていると、やはりVBAの勉強をしないといけないですね。

    勉強になります。

    ありがとうございました。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません