有參與這一問題2個表:SQL查詢 - 具有多個表的分組
表1:
|- Time Stamp -|- Special Number -|- Other Data -|
|- 2011 -|- 1 -|- green -|
|- 2010 -|- 1 -|- blue -|
|- 2009 -|- 2 -|- yellow -|
|- 2011 -|- 3 -|- red -|
|- 2010 -|- 3 -|- orange -|
|- 2009 -|- 4 -|- purple -|
表2:
|- Special Number -|- State (location) -|
|- 1 -|- Hawaii -|
|- 2 -|- Hawaii -|
|- 3 -|- Alaska -|
|- 4 -|- Alaska -|
表2涉及的 '特別號碼'到'國家'
現在,然後,我想要得到的結果看起來像這樣:
|- Time Stamp -|- State (location) -|- Other Data -|
|- 2011 -|- Hawaii -|- green -|
|- 2011 -|- Alaska -|- red -|
當我試圖讓MAX時間戳,每個國家,以及從表1
對應於「最新時間戳」行如果我做的其他數據分組:
SELECT MAX(time stamp), state
FROM table 1, table 2
WHERE table 1.special number = table 2.special number
GROUP BY state
這將返回最大時間戳,每個狀態(這幾乎是我所期待的),但是當我嘗試包括「其他數據」,它返回所有記錄(因爲每一個「其它數據'記錄是獨一無二的)。
我希望有人能提供一些思路, 感謝
編輯:
表1有一個唯一的ID列:
|- Time Stamp -|- Special Number -|- Other Data -|- Unique Row ID -|
|- 2011 -|- 1 -|- green -| 0 -|
|- 2010 -|- 1 -|- blue -| 1 -|
|- 2009 -|- 2 -|- yellow -| 2 -|
|- 2011 -|- 3 -|- red -| 3 -|
|- 2010 -|- 3 -|- orange -| 4 -|
|- 2009 -|- 4 -|- purple -| 5 -|
編輯2:解決方案* * * *謝謝大家誰發佈! * * * *
SELECT t1.timestamp, t2.specialNumber, t1.otherData
FROM Table1 t1 inner join Table2 t2 on t1.specialNumber = t2.specialNumber
inner join (select MAX(Table1.timestamp) maxts, Table2.state
from Table1 inner join Table2 on Table1.specialNumber = Table2.specialNumber
group by Table2.state) t3
on t2.state = t3.state and t1.timestamp = t3.maxts
*咻*
您是否有ID列來唯一標識表1中的行? – geekchic
在這裏搜索「sql latest row」,你應該可以找到幾種方法 –
我有一個ID列來唯一標識表1中的一行,我將發佈一個編輯後的表格1 – SimpleSam5