【发布时间】:2016-08-15 02:13:28
【问题描述】:
我的查询似乎很简单,也许我想多了。考虑 2 个表:客户 A 和服务 B。客户表有 2 个日期,服务开始日期和服务结束日期。现在,我们的 KPI 是我们应该为当月与我们一起活动超过 15 天的每个客户提供至少 1 项服务。这是每月的 KPI。我的界面允许您选择 3 个月或 6 个月的报告周期,所需的报告是按月服务的客户计数。这将按月份和他们所在的地区分组。
客户表 A
C_ID | Name | SrvStDt | SrvEndDt | ServManager | Region
1 | ABCD | 1 Jan 16 | 10 Mar 16 | AAAAAA | North
2 | EDFG | 1 Feb 16 | 15 Aug 16 | BBBBBB | South
3 | YTHG | 1 Mar 16 | 1 Jul 16 | CCCCCC | East
4 | WEFG | 21 Apr 16| 15 May 16 | DDDDDD | West
5 | POIU | 18 May 16| 15 Jul 16 | AAAAAA | North
6 | QWER | 30 Jun 16| -- | BBBBBB | South
7 | CVBH | 21 Jul 16| -- | CCCCCC | East
8 | ASDR | 1 Aug 16 | -- | DDDDDD | West
9 | LKJU | 15 Jan 16| 15 Jul 16 | AAAAAA | North
10 | MNBU | 15 Mar 16| 15 Jul 16 | BBBBBB | South
注意事项:没有结束日期表示客户端仍处于活动状态
服务表 B
ID | SrvDAte
1 | 15 Jan 16
1 | 12 Feb 16
1 | 01 Mar 16
1 | 10 Mar 16
2 | 15 Feb 16
2 | 15 Mar 16
2 | 31 Mar 16
2 | 15 Apr 16
2 | 15 May 16
2 | 15 Jul 16
2 | 15 Aug 16
3 | 21 Mar 16
3 | 23 Mar 16
3 | 23 Apr 16
3 | 23 May 16
4 | 29 Apr 16
5 | 23 May 16
6 | 12 Jul 16
7 | 23 Jul 16
9 | 23 Mar 16
9 | 23 Apr 16
9 | 23 May 16
10 | 19 Mar 16
10 | 19 Apr 16
10 | 19 May 16
10 | 19 Jun 16
对于 4 月 1 日至 7 月 31 日的报告,我之后的结果将如下所示:
Region | Month | Total Active | Total Serviced
North | Apr-16 | XXXX | XXXX
North | May-16 | XXXX | XXXX
North | Jun-16 | XXXX | XXXX
North | Jul-16 | XXXX | XXXX
South | Apr-16 | XXXX | XXXX
South | May-16 | XXXX | XXXX
South | Jun-16 | XXXX | XXXX
South | Jul-16 | XXXX | XXXX
East | Apr-16 | XXXX | XXXX
East | May-16 | XXXX | XXXX
East | Jun-16 | XXXX | XXXX
East | Jul-16 | XXXX | XXXX
West | Apr-16 | XXXX | XXXX
West | May-16 | XXXX | XXXX
West | Jun-16 | XXXX | XXXX
West | Jul-16 | XXXX | XXXX
我正在苦苦思索如何识别在整个报告期内每月至少活跃 15 天的客户。我可以在整个期间放置一个 between 子句,例如 4 月 1 日 - 7 月 1 日,但是我如何将它分成几个月并评估每个月?
我正在使用 MS Access VBA 和 SQL 查询。我想要一个 SQL 查询来给我这个结果集。
【问题讨论】:
-
什么是 KPI - 请不要使用首字母缩略词 - 如果它们对问题不重要,请使用实际含义或删除它们
-
这两个表是如何链接的——是
Client.C_ID == Service.ID -
抱歉:KPI = 关键绩效指标,是 Client.C_ID = Service.ID
-
您需要服务表做什么?您需要使用 VBA 每个月通过每个客户。必须尝试吗?