Вот что мой стол TheTable
выглядитSQL: частичная группа по
ColA | ColB | ColC
------+-------+------
abc | 2005 | item7
abc | 2010 | item3
def | 2009 | item2
def | 2010 | item4
def | 2011 | item5
def | 2012 | item1
И я хочу написать запрос, чтобы вернуть этот результат:
ColA | ColB | ColC
------+-------+------
abc | 2010 | item3
def | 2012 | item1
я закончил с:
SELECT TheTable.ColA,TheTable.ColB,TheTable.ColC
FROM TheTable,(SELECT ColA a,MAX(ColB) b FROM TheTable GROUP BY ColA) t
WHERE t.a=TheTable.ColA AND t.b=TheTable.ColB
Но я не уверен, что такой вложенный запрос очень эффективен. Итак, вопрос в том, есть ли лучший способ?
Ваши две другие колонки имеют оба значения MAX. Что произойдет, если вы добавите строку с 'def | 2008 | item7', а другой с 'def | 2012 | item3'? (Или измените последнее на '2013', если' ColA, ColB' уникален. –
Порядок ColC не имеет значения. Я изменил пример, чтобы сделать его более ясным. – gregseth