【发布时间】:2019-06-05 17:52:00
【问题描述】:
尝试编写一个查询,该查询将验证从一系列交易中得出的值。
表 A 包含列 Code, Date, Value,表 B 包含 Code, Date, Value。
两个表都包含相同代码的多个实例。
我想要实现的是从表 A 中获取每一行,并将表 B 中具有相同库存项目的行加入到其中,并且是小于表 A 日期的第一个日期。
例如
表 A
OC001, 2019-01-01, £10
表 B 有
OC001, 2018-10-15, £6
OC001, 2018-11-30, £8
OC001, 2019-01-02, £11
预期结果是
OC001, 2019-01-01, £10, OC001, 2018-11-30, £8
因为 2018-11-30 最接近 2019-01-01 并且 OC001 = OC001
尝试了不同的连接方法,但达到了我能构建的极限。
SELECT
r.Code,
cc.StockCode,
r.Date,
cc.InvDate
FROM tableA as r
JOIN tableB as cc ON r.Code = cc.StockCode AND r.Date >= cc.InvDate
ORDER BY r.Code, r.Date, cc.InvDate
该查询在大部分情况下都有效,但是当表 B 中有多个匹配结果时,它会重复结果。
【问题讨论】:
-
欢迎来到stackoverflow。请花一分钟时间获取tour,尤其是How to Ask。样本数据最好以DDL + DML 的形式提供。请edit您的问题包括它,您当前的尝试和您想要的结果。更多详情,read this.