我有下面表下面的列比較數據 -SQL - 從同一個表
ID-1,ID-2和ID-3 - 鍵列
率 - 顯示一個產品的速率基於上述ID
日期 - 暗示該費率適用的日期。
+-------+----------+-------------+----------+------------+ | ID-1 | ID-2 | ID-3 | Rate | Date | +-------+----------+-------------+----------+------------+ | 2000 | 1 | 100 | 50 | 12/30/2013 | +-------+----------+-------------+----------+------------+ | 2000 | 1 | 100 | 75 | 10/11/2013 | +-------+----------+-------------+----------+------------+ | 2000 | 1 | 100 | 100 | 12/15/2013 | +-------+----------+-------------+----------+------------+ | 2000 | 2 | 100 | 50 | 10/30/2013 | +-------+----------+-------------+----------+------------+ | 2000 | 2 | 100 | 75 | 10/11/2013 | +-------+----------+-------------+----------+------------+ | 2000 | 2 | 100 | 100 | 09/15/2013 | +-------+----------+-------------+----------+------------+ | 3000 | 2 | 200 | 25 | 1/1/2014 | +-------+----------+-------------+----------+------------+ | 4000 | 2 | 100 | 100 | 12/1/2013 | +-------+----------+-------------+----------+------------+ | 4000 | 1 | 200 | 75 | 1/1/2014 | +-------+----------+-------------+----------+------------+ | 4000 | 2 | 100 | 25 | 11/1/2014 | +-------+----------+-------------+----------+------------+
對於ID-1,每個組合ID-2和ID-3欲OUPUT以下列格式2分最近最率 - 先前速率 - 是用於第二最近的日期 電流的速率價格 - 是最近的最新日期的價格
+-------+----------+-------------+---------------+----------------+ | ID-1 | ID-2 | ID-3 | Previous Rate | Current Rate | +-------+----------+-------------+---------------+----------------+ | 2000 | 1 | 100 | 100 | 50 | +-------+----------+-------------+---------------+----------------+ | 2000 | 2 | 100 | 75 | 50 | +-------+----------+-------------+---------------+----------------+ | 3000 | 2 | 200 | | 25 | +-------+----------+-------------+---------------+----------------+ | 4000 | 1 | 200 | | 75 | +-------+----------+-------------+---------------+----------------+ | 4000 | 2 | 200 | 25 | 100 | +-------+----------+-------------+---------------+----------------+
任何想法?
MT0 - 爲什麼我們在select中做了max()? – jagamot
「排名」子查詢將根據降序日期排序順序爲「ID-1」,「ID-2」和「ID-3」分區中的每一行分配奧運排名;但是,這不會將分區中的行分組。爲了確保返回單個值,您需要對這些行進行分組,這需要一個聚合函數 - 即「MAX」);由於前面的行排序來分配排名,那麼'MIN'或'AVG'的效果會一樣好,但我隨意選擇了'MAX'。 – MT0