Чтобы получить дату шкафа из таблицы B для каждой записи в таблице A:
SELECT A.ID,A.`Date`, MIN(B.`Date`) AS B_Date
FROM TableA A
INNER JOIN TableB B
ON A.ID=B.ID
AND B.`Date`>A.`Date`
GROUP BY A.ID,A.`Date`
DROP TABLE IF EXISTS TableA;
DROP TABLE IF EXISTS TableB;
CREATE TABLE IF NOT EXISTS TableA (
ID varchar(10) not null,
`Date` date not null,
Value decimal(5,2) not null,
PRIMARY KEY(ID,`Date`)
);
CREATE TABLE IF NOT EXISTS TableB (
ID varchar(10) not null,
`Date` date not null,
Value decimal(5,2) not null,
PRIMARY KEY(ID,`Date`)
);
INSERT TableA(ID,`Date`,Value)
VALUES ('A', '2019-12-12', 0.75),
('B', '2020-01-01', 0.2),
('C', '2020-02-02', 0.6),
('D', '2020-03-03', 0.4),
('E', '2020-04-04', 0.8),
('F', '2020-05-05', 0.9);
INSERT TableB(ID,`Date`,Value)
VALUES ('A', '2019-12-18', 0.9),
('B', '2020-02-06', 0.6),
('C', '2020-03-08', 0.5),
('A', '2020-04-04', 0.8),
('B', '2020-07-06', 0.7),
('E', '2020-08-07', 0.5);
SELECT * FROM TableA;
SELECT * FROM TableB;
SELECT ta.*, tb.`Date` AS B_date, tb.Value as B_Value
FROM TableA ta
LEFT JOIN (
SELECT A.ID,A.`Date`, MIN(B.`Date`) AS B_Date
FROM TableA A
INNER JOIN TableB B
ON A.ID=B.ID
AND B.`Date`>A.`Date`
GROUP BY A.ID,A.`Date`) mb
ON ta.ID=mb.ID
AND ta.`Date`=mb.`Date`
LEFT JOIN TableB tb
ON tb.ID=mb.ID
AND tb.`Date`=mb.B_Date
ORDER BY ta.ID;