在 SQL 中用日期条件连接两个表

问题描述 投票:0回答:1

在第一个表中,我有客户编号、开始日期和其他列:

客户号码 开始日期 其他1 其他2
xyz 2024-04-01 值10 值20
abc 2024-01-02 值11 值21
2024-01-03 值12 值22

在第二个表中,我有每天有关客户银行帐户的信息:

日期 客户号码 账户余额
2024-03-01 xyz 500.0000
2024-04-01 xyz 1000.0000
2024-04-02 xyz 1000.0000
2024-04-03 xyz 1200.0000
2024-04-01 abc 2200.0000
2024-04-02 abc 2300.0000
2024-04-03 abc 2400.0000

我想加入表 1 和表 2,以获取从表 1 开始日期起有关客户帐户的信息。

例如客户端 xyz 的开始日期为 2024-04-01,所以在我的结果集中,我想要:

日期 客户号码 账户余额
2024-04-01 xyz 1000$
2024-04-02 xyz 1000$
2024-04-03 xyz 1200$
2024-04-02 abc 2300$
2024-04-03 abc 2400$

对于客户 xyz,我不需要 2024-04-01 之前的信息,对于客户 abc,我不需要 2024-04-02 之前的信息。

问题是我不知道要提供什么条件来限制第二个表中与开始日期相关的客户。

我不知道如何构建键来连接具有日期条件的表

sql join multiple-conditions teradata-sql-assistant
1个回答
0
投票

我认为这将提供你想要的限制

WITH LimitedData as
(
  SELECT * 
  FROM SecondTable
  WHERE [Date] Between '2024-1-1' and '2025-1-1' --restrict data from 2024 only
  AND  [client number] in ('abc','xyz') --restrict to short list of clients being investigated
)
Select f.*, s.[date], s.[account balance]
FROM FirstTable f
INNER JOIN LimitedData s ON f.[client number]=s.[client number]
WHERE s.[Date] >= f.[Start date]
ORDER BY f.[client number], s.[Date]

小提琴

© www.soinside.com 2019 - 2024. All rights reserved.