お世話になります。
先日、質問させていただいた際にうまく説明することができていないにも
関わらずご回答ありがとうございました。
その後、少し頭を整理する時間があり再度取り組んでみましたが
VBAを使用せずにうまい具合にクエリで解決する方法がどうしても浮かびません。
お知恵をお貸しいただけないでしょうか。
ある期間の累計申請数とその内訳(タスク)をグラフ化したいです。
★月度累計数⁼その月までの申請数となり、必ず右肩あがりになります
★受付後、TB_処理にレコードがなければ未処理でカウントします
★動きがない月は、前月と同じタスクでカウントします
★月度内にタスクが2以上ある場合は日付の最大でカウントします
未処理のレコードは、TB_申請とTB_処理を管理番号の不一致クエリで取得できるため
毎月のタスクの方がうまく取得できればUnionしようと思っています。
実際のレコードは約1200件あるので、6カ月分グラフ化するとなると
1200×6のデータソースが必要です。
表示までの時間もできるだけ早くしたいため、どうかご教示お願いします。
《テーブル構成》
【TB_申請】 管理番号(主キー)、受付日、案件名称
【TB_処理】 管理番号(複合キー)、処理日 (複合キー)、タスクID
【TB_タスク】ID(主キー)、名称
《レコード》
【TB_申請】
管理番号 | 受付日 | 案件名称 |
---|---|---|
A001 | 2021/1/1 | 変更依頼1 |
A002 | 2021/3/9 | 変更依頼2 |
A003 | 2021/4/6 | 変更依頼3 |
A004 | 2021/5/4 | 変更依頼4 |
【TB_処理】
管理番号 | 処理日 | タスク |
---|---|---|
A001 | 2021/2/10 | タスク1 |
A001 | 2021/2/25 | タスク2 |
A001 | 2021/4/21 | 受理 |
A002 | 2021/4/3 | タスク1 |
A002 | 2021/5/5 | 不受理 |
【TB_グラフ期間】
年月 | |
---|---|
2021年1月 | |
2021年2月 | |
2021年3月 | |
2021年4月 | |
2021年5月 | |
2021年6月 |
《出力したいクエリ》
《作成したいグラフ》
アドバイスいただいて、以下のデータソースまで作成できました。
Unionすることなく、意図するものに近いクエリが作成できました。
あとは、動きがない月の管理番号を前月タスクで出力できれば完成です。
どうかお知恵をお貸しください。よろしくお願いいたします。
SQL
1★判定ありの月度MAXタスク 2 3SELECT Format(A.処理日,'yyyy\年m\月') AS 月度, A.管理番号, A.[タスク], A.処理日 4 5FROM TB_処理 AS A INNER JOIN (SELECT 管理番号, MAX(処理日) AS 処理日最大 FROM TB_処理 6 7GROUP BY TB_処理.[管理番号], Format([処理日],'yyyy\年m\月')) AS B ON (A.処理日 = B.処理日最大) AND (A.管理番号 = B.管理番号) 8 9ORDER BY Format(A.処理日,'yyyy\年m\月'), A.管理番号; 10 11★時系列グラフ月度総数 12 13SELECT TB_申請.管理番号, TB_グラフ期間.年月, TB_申請.受付日 14 15FROM TB_グラフ期間, TB_申請 16 17WHERE (((Format([受付日],"yyyy\年m\月"))<=[年月])) 18 19ORDER BY TB_申請.管理番号, TB_グラフ期間.年月; 20 21★時系列グラフデータソース 22 23SELECT [★時系列グラフ月度総数].管理番号, [★時系列グラフ月度総数].年月, Nz([タスク],"未処理") AS 月度タスク 24 25FROM ★時系列グラフ月度総数 LEFT JOIN ★判定ありの月度MAXタスク 26 27ON ([★時系列グラフ月度総数].管理番号 = [★判定ありの月度MAXタスク].管理番号) AND ([★時系列グラフ月度総数].年月 = [★判定ありの月度MAXタスク].月度) 28 29ORDER BY [★時系列グラフ月度総数].管理番号, [★時系列グラフ月度総数].年月; 30
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/26 13:09
2021/04/26 13:44
2021/04/27 01:18
2021/04/28 01:10