下表:
pk,EmployeeNo,Building,ValidFrom,ValidTo.
1, 1, a, 2000-01-01, 2008-06-01
2, 1, b, 2008-06-01, 2010-06-01
3, 1, c, 2010-06-01, 2011-08-01
4, 2, a, 2000-01-01, 2008-06-01
5, 2, b, 2008-06-01, 2010-06-01
6, 2, c, 2010-06-01, 2011-08-01
我是一个相对新手的sql开发人员,我使用的是mssqlserver。我想设计一个sql查询,它可以使用上面使用类型2缓慢变化的维度(validfrom date和validto date)构建的表,并生成一个随时间推移的每日趋势客户计数表。
输出如下:
Date, Employee Count
1/1/2000, 2
1/2/2000, 2
3条答案
按热度按时间aelbi1ox1#
您可以使用聚合和累计和—在取消激活数据之后:
注意:这假设
validto
不包括日期。如果你想把它包括在内,那就加上“1”。编辑:
如果您只需要这两个日期的结果,请使用:
gg58donl2#
下面的sql似乎可以工作。本人假设该员工的有效期为有效期至(但不包括)有效期至(但不包括)有效期至(但不包括)有效期至(但不包括)有效期至(但不包括)有效期至(但不包括)有效期至(但不包括)有效期至(但不包括)有效期至(但不包括)有效期至(但不包括)有效期;如果此假设不正确,则需要修改内部连接逻辑。
qxsslcnc3#
一个简单的方法是建立一个日期表,然后计算在特定日期有多少员工(或客户)。