如何获得最接近事件的特定事件每个变量值?



我得到了这个表:

<表类> ID 日期 事件 眼睛 tbody><<tr>1112022-01-0110月左1112022-01-04VA左1112022-01-05注入左1112022-06-0110月对1112022-06-01VA对1112022-06-0510月对1112022-06-05VA对1112022-06-05注入对

我相信CROSS APPLYOUTER APPLY是你需要的。两者都连接到一个子选择,该子选择允许您选择特定的匹配标准,排序,最重要的是在这种情况下TOP 3

ACROSS APPLY类似于(内)JOIN,而OUTER APPLY类似于LEFT JOIN。使用后者可以在注入没有先验事件的情况下使用。

结果查询类似于:

SELECT PRIOR.*
FROM MY_TABLE T
OUTER APPLY (
SELECT TOP 3 *
FROM MY_TABLE T2
WHERE T2.ID = T.ID
AND T2.EYE = T.EYE
AND T2.DATE <= T.DATE  -- Should we allow same-day event?
ORDER BY T2.DATE DESC
) PRIOR
WHERE T.EVENT = 'INJECTION'
ORDER BY T.ID, T.DATE, T.EYE, PRIOR.DATE

结果:

<表类>ID日期事件眼睛tbody><<tr>1112022-01-0110月左1112022-01-04VA左1112022-01-05注入左1112022-06-05VA对1112022-06-0510月对1112022-06-05注入对

最新更新