相关疑难解决方法(0)

T-SQL - 跟踪一段时间内的事件

我有一些与之相关的数据ValidFromValidTo日期.简单来说:

MembershipId | ValidFromDate | ValidToDate
==========================================
0001         | 1997-01-01    | 2006-05-09
0002         | 1997-01-01    | 2017-05-12
0003         | 2005-06-02    | 2009-02-07
Run Code Online (Sandbox Code Playgroud)

此表上有一个非聚集索引,其中包含两个日期作为键值.

我也有涵盖了所有日期从时间维度表19002999.

我试图找出我怎么能选择一个范围从日期维度表的日期(假设2016-01-012016-12-31),然后确定对于每一日期,许多成员是如何在该日起生效.

下面的代码完成了工作,但性能不是很好,我想知道是否有人有任何建议可以更好地解决这个问题?

SELECT 
   d.DateKey
  ,(SELECT COUNT(*) FROM Memberships AS m
    WHERE d.DateKey between m.ValidFromDateKey and m.ValidToDateKey
    ) AS MembershipCount

FROM       
   DIM.[Date] AS d

WHERE
   d.CalendarYear = 2016
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的任何建议!

sql t-sql date dimensional-modeling

3
推荐指数
1
解决办法
111
查看次数

标签 统计

date ×1

dimensional-modeling ×1

sql ×1

t-sql ×1