我知道這已經回答了,但問題引起了我的興趣,所以我想我會試試看。
我認爲你可能想看到任何兩個連續日期之間的差異。
所以以下數據:
GOOG 2012-09-07 42.34
GOOG 2012-09-06 44.56
GOOG 2012-09-01 44.32
FB 2012-09-07 17.82
FB 2012-08-05 12.98
你會得到:
GOOG 2012-09-07 2012-09-06 -2.22
GOOG 2012-09-06 2012-09-01 0.24
FB 2012-09-07 2012-08-05 4.84
我寫了這個查詢是:
SELECT t1.Stock, t1.Date AS CurrentDate, oldDate.Date AS OldDate, (t1.Price - oldDate.Price) AS PriceChange
FROM MP_StockTable t1
JOIN (SELECT t2.Stock, t2.Date AS date1, (SELECT MAX(t3.Date) FROM MP_StockTable t3 WHERE t3.Date < t2.Date AND t3.Stock = t2.Stock GROUP BY t3.Stock) AS date2
FROM MP_StockTable t2) AS StockDates ON StockDates.Stock = t1.Stock AND StockDates.date1 = t1.Date
JOIN MP_StockTable oldDate ON oldDate.Stock = t1.Stock AND oldDate.Date = StockDates.date2
內聯表基本計算最接近每行的前一日期。因此,對於上述數據,生成的表將是這樣的:
GOOG 2012-09-07 2012-09-06
GOOG 2012-09-06 2012-09-01
GOOG 2012-09-01 NULL
FB 2012-09-07 2012-08-05
FB 2012-08-05 NULL
然後,使用這兩個日期從該表中獲得我們兩家的價格點。
注意:我在SQLServer中測試,所以如果這需要對mySql進行一些調整(這是多年以來使用mySql,所以我已經忘記了差異)。
有沒有超過兩個? –
你正在使用什麼特定的rdms?我認爲它是SQLServer。 –
@JohnWoo爲什麼假設SQL Server? yyyy-mm-dd看起來像MySQL。 –