У меня есть таблица, как этотКак max (date) и использовать функцию in в sql-сервере в одном запросе?
id color shade date
--- ---- ----- -----
1 red dark 01/01/1990
2 red light 09/16/2013
3 green light 08/15/2010
4 green dark 09/18/2012
5 maroon dark 08/20/2013
6 white dark 08/31/2013
7 white light 08/30/2012
8 purple light 08/20/2010
Я хотел записи для каждого цвета с последней датой. Так что я попытался сделать:
select id, color, shade, max(date) from mytable;
Это не сработало, и дал мне ошибку:
is invalid in the select list because it is not contained in either an aggregate
function or the GROUP BY clause.
Alright, поэтому я добавил его в Group By
, как это было предложено ошибки
select id, color, shade, max(date) from mutable
Group by id, color, shade
Это дало мне желаемые результаты.
Вопрос
Теперь я хотел тот же запрос, как описано выше, повторяется только для определенных цветов. Например, я только хотел увидеть красные и зеленые.
Так что я сделал:
select id, color, shade, max(date) from mutable
Where color in ('red', 'green')
Group by id, color, shade;
Однако это не дает мне правильное число результатов, потому что я предполагаю, что они группируются по shade
.
Каков наилучший способ получить мои желаемые результаты? В основном я хочу, чтобы max date
из двух экземпляров одной и той же вещи, и в дальнейшем из таблицы нужны только определенные цвета.
, когда вы говорите одно и то же, вы имеете в виду тот же цвет? И ваш желаемый результат: «1, красный, свет, 09/16/2013» и «4, зеленый, темный, 09/18/2012»? – Elmer