对于事务粒度事实表来说,只有当该天有事务发生时,才会在事实表中出现当天的记录。一个简化的事务粒度事实表如下所示。

Date_Key(FK)

Account_Key(FK)

Transaction_Type_Key(FK)

Transcation_Sequence_Number

Final_Flag

Amount

Balance

表中,Date_key是日期维度表的代理键。Account_key是帐户维度表的代理键。Transaction_Type_Key是事务类型表的代理键。Transcation_Sequence_Number是帐户当天事务的流水号。Final_Flag='True'表示这是当天最后一笔事务。Amount是事务的数量。Balance是帐户当时的结余值。

对于这样的事实表,如果61日到15日都没有事务发生,就不会出现该天的记录。但是,需求会出现要我们查询610日所有帐户的结余值的情况。示例的SQL如下所示。

SELECT a.acctnum,f.balance

FROM fact f,account a

WHERE f.account_key = a.account_key

AND f.final_flag = 'True'

AND f.date_key =

  (SELECT MAX(g.date_key)

  FROM fact g

  WHERE g.account_key = f.account_key

  AND g.date_key IN

    (SELECT t.date_key

    FROM time t

    WHERE t.fulldate <= '2006-6-10'))

相关文章:

  • 2021-12-31
  • 2021-06-13
  • 2021-10-25
  • 2022-12-23
  • 2022-01-29
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-02-04
  • 2021-09-19
  • 2022-12-23
  • 2022-01-11
相关资源
相似解决方案