実現したいこと
お世話になっております。
Access2016でクエリを作っています。
ユニークユーザーを月ごとに年度内で累計していくクエリを作りたいのですが、
同じ年度内で同じユーザーIDが別の月に出た場合は1カウントとしたいです。
アドバイスお願いいたします!
※「ID」はオートナンバー型です。
【元データ】
ID | 見積月 | ユーザーID |
---|---|---|
1 | 2018/4/1 | A |
2 | 2018/4/1 | A |
3 | 2018/4/1 | B |
4 | 2018/5/1 | B |
5 | 2018/5/1 | C |
6 | 2018/6/1 | A |
7 | 2018/6/1 | B |
8 | 2018/6/1 | D |
【結果】
|年度|年|月|ユーザー数|
|:--|:--:|--:|
|2018|2018|4|2|
|2018|2018|5|3|
|2018|2018|6|4|
試したこと
下記のようなクエリをSQLビューで作ってみたところ、エラーになりました。
■サブクエリ内で親クエリのフィールドを参照できない
select Format$(DateAdd("m",-3,A.見積月),"yyyy") AS 年度, Format$(A.見積月,"yyyy") AS 年, Format$(A.見積月,"m") AS 月, (select count([元データ]![ユーザーID]) from 元データ where Format$([元データ]![見積月],"yyyymm") <= Format$(A.見積月,"yyyymm")) as ユーザー数 from 元データ as A group by Format$(DateAdd("m",-3,A.見積月),"yyyy") AS 年度, Format$(A.見積月,"yyyy") AS 年, Format$(A.見積月,"m") AS 月 order by Format$(DateAdd("m",-3,A.見積月),"yyyy") AS 年度, Format$(A.見積月,"yyyy") AS 年, Format$(A.見積月,"m") AS 月;
■Join式がサポートされていませんというエラー
select format$(dateadd("m",-3,a.見積月),"yyyy") as 年度, format$(a.見積月,"yyyy") as 年, format$(a.見積月,"m") as 月, format$(a.見積月,"yyyymm") as 比較用, b.ユーザー数 from 元データ as a inner join ( select format$(dateadd("m",-3,[元データ]![見積月]),"yyyy") as 年度, format$([元データ]![見積月],"yyyy") as 年, format$([元データ]![見積月],"m") as 月, format$([元データ]![見積月],"yyyymm") as 比較用, count([元データ]![ユーザーID]) as ユーザー数 from 元データ group by format$(dateadd("m",-3,[元データ]![見積月]),"yyyy"), format$([元データ]![見積月],"yyyy"), format$([元データ]![見積月],"m"), format$([元データ]![見積月],"yyyymm") ) as b on (a.年度 = b.年度) and (b.比較用 <= a.比較用);
補足情報(FW/ツールのバージョンなど)
Win7、Access2016です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/14 07:42
2019/03/14 07:52 編集
2019/03/15 00:08