我有两张桌子。
Table 1 = My Trades
Table 2 = Market Trades
我想在交易前1分钟查询市场交易。如果表2中没有距离我的1分钟的市场交易那么我想回头看2分钟,依此类推,直到我有一场比赛。
现在我的查询让我分开了1分钟,但我无法弄清楚如果NULL或间隔3分钟如果为NULL(最多30分钟),则分开2分钟。我认为最好使用变量,但我不确定最好的方法来解决这个问题。
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)
答案 0 :(得分:1)
在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;