在第一个表中,我有客户编号、开始日期和其他列:
客户号码 | 开始日期 | 其他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 之前的信息。
问题是我不知道要提供什么条件来限制第二个表中与开始日期相关的客户。
我不知道如何构建键来连接具有日期条件的表
我认为这将提供你想要的限制
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]