我有两个表,一个包含截至给定日期的客户状态,另一个包含客户交易历史记录。对于给定的交易日期,我想提取该交易日期的状态(基于状态表中最近的插入日期(交易日期之前))。
我尝试过几次自连接之类的东西,但都遇到了麻烦。非常感谢大家的帮助。
此处使用 Snowflake SQL。
状态表
澳大利亚会计与会计准则委员会 | 插入日期 | 地位 |
---|---|---|
123 | 2023-05-31 | 金子 |
123 | 2023-03-01 | 银 |
翻译表
澳大利亚会计与会计准则委员会 | 交易日期 | 主动机械式 |
---|---|---|
123 | 2023-06-30 | 400 |
123 | 2023-04-01 | 222 |
所需表
澳大利亚会计与会计准则委员会 | 交易日期 | 地位 |
---|---|---|
123 | 2023-06-30 | 金子 |
123 | 2023-04-01 | 银 |
由于您没有指定使用的数据库,下面是 SQL Server 的示例
概念上与上面的答案相同,这是雪花版本,因为您提到它是用于雪花的。
1.我们将 Tran 表与 Status 表连接起来,以获得所有可能的匹配,其中帐号相同,并且状态
INSERT_DATE
在 或之前TRAN_DATE
。2.然后为同一个帐户分配一个等级,并
TRAN_DATE
根据状态INSERT_DATE
从最近到最旧进行排序,因此最近的帐户的INSERT_DATE
等级为 1。3.然后使用它进行过滤
QUALIFY
以获取每个的最新状态TRAN_DATE
。生成