如何从特定年份的SCD type2表中获取数据

时间:2017-09-24 19:16:17

标签: sql reporting etl business-intelligence

我有一个scd type 2表,其中包含: -

ib  address start date  end date  flag
1   a        Jan-12     Dec-00    X
2   b        Jan-13     13-Mar    x
2   c        13-Mar     Dec-00    y
3   d        Feb-13     Dec-00    Y
1   v        Sep-17     Dec-00    Y

我想获取2013年所有员工的地址。 从2013年的表中选择所有活动记录。

1 个答案:

答案 0 :(得分:1)

您想要检索两组数据:

  • 员工在过去的任何时间,直到2013年或之后(开始日期< 2013和结束日期> = 2013)的地址有效。
  • 员工在2013年开始有效地处理。

这为您提供了2013年有效的地址的整个数据集。每个员工可能有多个地址,因此您需要在select语句中包含有效日期。

假设该表名为addresses,并且日期列格式正确:

select *
from addresses
where
    -- addresses valid until 2013 or later
    (year(start_date) < 2013 and year(end_date) >= 2013)
    -- addresses  which started being valid in 2013
    OR (year(start_date) = 2013)