- 表
A有欄位RefuelId和RefuelTime。記錄我給汽車加油的時間。 - 表
B有欄位Price和UpdateTime。記錄價格和汽油價格更新的時間。 - 想要的結果:
A.RefuelId,A.RefuelTime,B.Price,B.UpdateTime.
B.Update是之前的壁櫥時間RefuelTime。試過left join了,但是 TableA和B. 回傳笛卡爾積。
表A, RefuelRecord:
| 加油標識 | 加油時間 |
|---|---|
| 1 | 2022-02-01 12:15:00 |
| 2 | 2022-03-01 12:15:00 |
| 3 | 2022-04-01 12:15:00 |
表B, GasUpdateRecord:
| 更新時間, | 價格 |
|---|---|
| 2022-01-20 0:00:00 | 9.0 |
| 2022-02-20 0:00:00 | 8.1 |
| 2022-03-20 0:00:00 | 7.2 |
結果表:
| 1 | 2022-02-01 12:15:00 | 2022-01-20 0:00:00 |
| 2 | 2022-03-01 12:15:00 | 2022-02-20 0:00:00 |
| 3 | 2022-04-01 12:15:00 | 2022-03-20 0:00:00 |
SQL:
Create table RefuelRecord (RefuelId int, RefuelTime datetime);
INSERT INTO RefuelRecord VALUES(1, '2022-02-01 12:15:00');
INSERT INTO RefuelRecord VALUES(2, '2022-03-01 12:15:00');
INSERT INTO RefuelRecord VALUES(3, '2022-04-01 12:15:00');
Create table PriceUpdateRecord (UpdateTime datetime, Price double);
INSERT INTO PriceUpdateRecord VALUES('2022-01-20 12:15:00', 9.0);
INSERT INTO PriceUpdateRecord VALUES('2022-02-20 12:15:00', 8.0);
INSERT INTO PriceUpdateRecord VALUES('2022-03-20 12:15:00', 7.0);
uj5u.com熱心網友回復:
在應該小于的條件下做一個to的LEFT連接。
然后使用聚合和SQLite 的裸列功能從max中獲取每一行:RefuelRecordPriceUpdateRecordUpdateTimeRefuelTimeRefuelIdPriceUpdateRecordUpdateTime
SELECT r.RefuelId,
r.RefuelTime,
MAX(p.UpdateTime) UpdateTime,
p.Price
FROM RefuelRecord r LEFT JOIN PriceUpdateRecord p
ON p.UpdateTime < r.RefuelTime
GROUP BY RefuelId;
請參閱演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/511666.html
