SQL-使用日期范围临时表和带有开始/结束合同日期的客户列表执行计数语句(第二临时表)

时间:2019-01-08 15:17:59

标签: sql-server tsql

Screenshot-我目前正在尝试使用来自两个临时表的信息执行计数功能。一个表仅列出日期为2018年1月1日至2018年12月31日(临时表1),而另一个表则包含大约100个客户的客户信息(临时表2),包括合同的开始和结束日期。这两个表不能连接。我的目标是对临时表1中的每个日期进行计数,例如:如果临时表1的日期为1/1/2018,那么我想计算当客户合同开始时当天有多少个合同处于活动状态日期是12/5/2017,结束日期12/31/2021我希望该客户被计算在内,依此类推。如果客户合同日期于2017年12月31日结束,我不希望该客户被计为1/1/2018,如果客户开始日期为1/2/2018,我不希望将该客户计为1 / 1,只有1/2及以上。我希望这是足够的信息。谢谢

2 个答案:

答案 0 :(得分:0)

假设您具有如下表结构:

  • customers:具有列start_dateend_date的列,它们代表合同的开始和结束日期。
  • dates:有一个名为my_date的列
  • (并且还假设以上所有列的数据类型均为DATE或等效数据)

然后,您要JOIN这两个表:

SELECT
    d.my_date,
    COUNT(*) -- number of active contracts at that date
FROM customers c
INNER JOIN dates d ON d.my_date BETWEEN c.start_date AND c.end_date
GROUP BY d.my_date

答案 1 :(得分:0)

从tab2中选择mydate,Count(*)作为活动计数

其中mydate>(从tab2中选择开始日期)

和mydate <(从tab2中选择结束日期)

按mydate分组