我正在嘗試通過與 Range 表的連接擴展一個較小的表來創建一個每日時間點表。Range 表定義了我要為其創建資料的日期。指標表保存定期持久化的資料。這些表如下所示:
范圍
| 日期 |
|---|
| 2000-01-01 |
| 2000-01-02 |
| 2000-01-03 |
| 2000-01-04 |
| 2000-01-05 |
公制
| 日期 | 一個 | 乙 |
|---|---|---|
| 1999-12-31 | 3.4 | 2.2 |
| 2000-01-03 | 6.2 | 1.1 |
日期表應定義構建輸出表的日期范圍。我想在 Range.date 上加入大于 Metric.date 的表,因此輸出如下所示。
輸出
| 日期 | 一個 | 乙 |
|---|---|---|
| 2000-01-01 | 3.4 | 2.2 |
| 2000-01-02 | 3.4 | 2.2 |
| 2000-01-03 | 3.4 | 2.2 |
| 2000-01-04 | 6.2 | 1.1 |
| 2000-01-05 | 6.2 | 1.1 |
我嘗試了幾個不同的版本,但沒有成功。這是我迄今為止所擁有的:
CREATE TABLE OUTPUT
SELECT * FROM [db].Range AS d LEFT JOIN [db].Metric AS m ON d.date >
(SELECT m.date
FROM [db].Metric AS m2
WHERE m2.date < d.date
ORDER BY m2.date ASC
LIMIT 1
);
以上為每個日期、指標組合回傳行,其中指標大于日期。我可以看到外部GROUP BY日期如何解決這個問題,但它看起來很難看,而且性能會非常糟糕。有沒有更簡單的方法?
提前致謝 :)
uj5u.com熱心網友回復:
似乎您想在較小的最近日期加入。你有沒有嘗試過:
Select Range.date, A, B
from Range inner join Metric
on Metric.date = (select max(date) from Metric where date < Range.date);
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/400245.html
上一篇:如何獲得每組的第一行?
