我有两个表。
Table 1 = My Trades
Table 2 = Market Trades
我想在交易前1分钟查询市场交易。如果表2中没有市场交易,除了我的市场外,我想回头2分钟,依此类推,直到我有一场比赛。
现在,我的查询使我相距1分钟,但我无法弄清楚如何相距2分钟,如果无效,则相距3分钟(最多30分钟)。我认为最好使用变量,但我不确定最好的方法。
Select
A.Ticker
,a.date_time
,CONVERT(CHAR(16),a.date_time - '00:01',120) AS '1MINCHANGE'
,A.Price
,B.Date_time
,B.Price
FROM
Trade..MyTrade as A
LEFT JOIN Trade..Market as B
on (a.ticker = b.ticker)
and (CONVERT(CHAR(16),a.date_time - '00:01',120) = b.Date_time)
在mySQL中没有很好的方法。但是,由于您的代码看起来像SQL Server,我将在此处显示该解决方案,使用APPLY
:
select t.Ticker ,
convert(CHAR(16), t.date_time - '00:01', 120) AS '1MINCHANGE',
t.Price,
m.Date_time,
m.Price
from Trade..MyTrade as t outer apply
(select top 1 m.*
from Trade..Market m
where a.ticker = b.ticker and
convert(CHAR(16), t.date_time - '00:01', 120) >= b.Date_time)
order by m.DateTime desc
) m;