有参与这一问题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