我有一些与之相关的数据ValidFrom和ValidTo日期.简单来说:
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)
此表上有一个非聚集索引,其中包含两个日期作为键值.
我也有涵盖了所有日期从时间维度表1900来2999.
我试图找出我怎么能选择一个范围从日期维度表的日期(假设2016-01-01到2016-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)
在此先感谢您的任何建议!