- 表
A
有字段RefuelId
和RefuelTime
。记录我给车加油的时间。 - 表
B
具有字段Price
和UpdateTime
。记录汽油价格和汽油价格更新时间。 - 想要结果:
A.RefuelId
,A.RefuelTime
,B.Price
,B.UpdateTime
。
B.Update
是RefuelTime
之前的关闭时间。我尝试了left join
,但表A
和B
之间没有公共字段。退货笛卡尔乘积。
表A
、RefuelRecord
:
RefuelId|RefuelTime
1|2022-02-01 12:15:00
2|2022-03-01 12:15:00
3|2022-04-01 12:15:00
表B
、GasUpdateRecord
:
UpdateTime,|价格
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);
1条答案
按热度按时间ntjbwcob1#
在
UpdateTime
应小于RefuelTime
的条件下,执行RefuelRecord
到PriceUpdateRecord
的LEFT
联接。然后使用聚合和SQLite的裸列功能,为每个
RefuelId
获取PriceUpdateRecord
中具有最大UpdateTime
的行:请参阅demo。