Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以使用什么SQL从付款数据中检索计数?_Sql_Database_Ms Access_Count - Fatal编程技术网

我可以使用什么SQL从付款数据中检索计数?

我可以使用什么SQL从付款数据中检索计数?,sql,database,ms-access,count,Sql,Database,Ms Access,Count,计数标准:按学校服务类型对每所学校的学生人数(由唯一的学生ID索引)进行“真实”计数(按月/年) 我目前正在使用MS Access。我需要能够提取与下面的示例数据相似的数据库计数。每行是一个付款观察 样本数据: Student ID | School | School Service Type | PaymentStartDate | PaymentEndDate | 001 ABC ED 01/02/2010

计数标准:按学校服务类型对每所学校的学生人数(由唯一的学生ID索引)进行“真实”计数(按月/年)

我目前正在使用MS Access。我需要能够提取与下面的示例数据相似的数据库计数。每行是一个付款观察

样本数据:

Student ID |  School  | School Service Type | PaymentStartDate | PaymentEndDate |
   001          ABC              ED             01/02/2010         02/04/2012
   001          ABC              ED             01/02/2010         01/05/2010
   001          ABC              ED             04/02/2010         05/05/2010            
   001          DEF              EZ             01/02/2010         02/04/2012
   001                           RR             02/02/2012         02/03/2012
   002          ABC              ED             02/02/2010         02/03/2011
   002          ABC              EZ             02/02/2010         06/03/2010
   002          GHI              ED             02/04/2011         02/04/2012
   003          ABC              ED             02/02/2011         02/03/2012
   003          DEF              ED             01/02/2010         08/03/2010
   003                           RR             02/02/2011         02/03/2011
   004                           RR             02/02/2011         02/03/2011
   005          GHI              ED             08/02/2010         02/04/2011
   006          GHI              ED             08/02/2010         08/02/2010
我希望我的计数看起来像什么:

  Month  |  Year  | School | ED | EZ | RR |

   01       2010     ABC      1    0    0    
   01       2010     DEF      1    1    0
   01       2010     GHI      0    0    0
   02       2010     ABC      2    1    0
   03       2010     ABC      2    1    0
示例

Desire:我想了解2010年1月

最大的障碍-重复

请查看学生ID 001的观察结果。2010年1月至2012年2月期间,ABC学校收到了3笔款项,用于支付学生001的完全相同的
服务类型(ED)

我希望我2010年1月在学校
ABC
接受
ED
服务的学生数返回值1,因为当时只有一名学生(
student 001
)在该学校接受了
ED
服务

但是,当我执行交叉表来检索当前数据的计数时,它返回的值为2(对于两个学生)。原因是
Student 001
的付款#1和付款#2都符合我2010年1月的月-年标准

付款#1符合标准,因为2010年1月在2010年2月1日至2012年4月2日的付款日期范围内*

付款#2也符合标准,因为2010年1月在2010年2月1日至2010年5月1日的付款日期范围内

付款#3不符合标准,因为2010年1月不在该行的日期范围内(2010年2月4日-2010年5月5日)

*您分别从
PaymentStartDate
PaymentEndDate
获取这些日期

我在这里准备了样本数据的Excel版本:

请记住:

  • PaymentStartDate和PaymentEndDate之间经过的时间在各方面变化极大,从0天到122天不等

  • 很多时候,在PaymentStartDate和PaymentEndDate之间的时间间隔为0天的情况下,存在真正独特的付款观察(请查看上面数据中学生ID 006的付款行)。因此,删除不符合指定的“PaymentStartDate和PaymentEndDate之间的时间间隔”标准的行不是一个选项,因为很多时候它们不是我试图为计数删除的重复行

  • 是的,对于某些服务类型,没有学校价值

与往常一样,对于如何解决此重复问题以及如何在MS Access中检索我的真实计数值,非常感谢您提供的任何有用建议。谢谢你抽出时间


编辑(2014年10月2日):更改上述计数输出,以反映我在帖子中提供的样本数据。我很抱歉以前没有这样做

这里有一个解决方法。对于名为[Payments]的表中的示例数据

付款行学生ID学校服务类型PaymentStartDate PaymentEndDate
-----------  ----------  ------  -------------------  ----------------  --------------
1001 ABC ED 2010-01-02 2012-02-04
2001 ABC ED 2010-01-02 2010-01-05
3001 ABC ED 2010-04-02 2010-05-05
4001 DEF EZ 2010-01-02 2012-02-04
5001RR 2012-02-02 2012-02-03
62002 ABC ED 2010-02-02 2011-02-03
7 002 ABC EZ 2010-02-02 2010-06-03
8002 GHI教育版2011-02-04 2012-02-04
9 003 ABC ED 2011-02-02 2012-02-03
10 003 DEF ED 2010-01-02 2010-08-03
11 003 RR 2011-02-02 2011-02-03
12 004 RR 2011-02-02 2011-02-03
130005 GHI教育版2010-08-02 2011-02-04
14006 GHI教育版2010-08-02 2010-08-02
如果我们在名为[PaymentsYearMonth]的Access中创建保存的查询

选择
[学生证],
学校
[学校服务类型],
(年(付款开始日期)*100)+月(付款开始日期)为开始日期YYYYMM,
(年(PaymentEndDate)*100)+月(PaymentEndDate)截至年月日
来自付款
它会给我们

学生ID学校学校服务类型开始YYYYMM结束YYYYMM
----------  ------  -------------------  -----------  ---------
001 ABC ED 201001 201202
001 ABC ED 201001 201001
001 ABC ED 201004 201005
001 DEF EZ 201001 201202
001 RR 201202 201202
002 ABC ED 201002 201102
002 ABC EZ 201002 201006
002 GHI教育版201102 201202
003 ABC ED 201102 201202
003 DEF ED 201001 201008
003 RR 201102 201102
004 RR 201102 201102
005 GHI ED 201008 201102
006 GHI ED 201008 201008
要生成数据涵盖的年/月对,我们可以使用名为[MonthNum]的表