Группировка

Gagarin_74
Дата: 06.02.2013 15:21:09
Друзья!

Помогите составить запрос к следующей таблице:
Дата_экзаменаНазвание_курсаФИО_студентаДолжность Оценка
20.02.2012Механика Иванов Иван МихайловичСтудент 3 курса 3
4.01.2011 Химия Ололоева Вера ПетровнаГордость ВУЗа5
28.02.2012Физика Иванов Иван МихайловичСтудент 3 курса4
4.11.2012Механика Иванов Иван МихайловичСтудент 4 курса5


Необходимо что бы результатом запроса была таблица в которой для каждого студента присутствовали только строки отражающие последний (по дате) экзамен по каждому курсу.
Результат должен появиться таким:
Дата_экзаменаНазвание_курсаФИО_студентаДолжность Оценка
4.01.2011 Химия Ололоева Вера ПетровнаГордость ВУЗа5
28.02.2012Физика Иванов Иван МихайловичСтудент 3 курса4
4.11.2012Механика Иванов Иван МихайловичСтудент 4 курса5


Запрос типа:
Select Max (Дата_экзамена), Название_курса, ФИО_студента, Должность, Оценка
from Обучение
group by Название_курса, ФИО_студента, Должность, Оценка

Не прокатывает. :(
Гость333
Дата: 06.02.2013 15:37:24
Gagarin_74,

См. 8947782
petre
Дата: 06.02.2013 15:41:01
Так подойдет?

Select t1.Дата_экзамена, t1.Название_курса, t1.ФИО_студента, t1.Должность, t1.Оценка
from Обучение t1
inner join
(Select Max (Дата_экзамена) as Дата_экзамена, Название_курса, ФИО_студента
from Обучение
group by Название_курса, ФИО_студента) t2
on t2.Дата_экзамена=t1.Дата_экзамена and t2.Название_курса=t1.Название_курса and t2.ФИО_студента=t1.ФИО_студента
VladimirKr
Дата: 06.02.2013 16:09:13
Еще вариант :)

declare @t table(
	Дата_экзамена datetime
	,Название_курса  varchar(100)	
	,ФИО_студента	varchar(100)
	,Должность varchar(100)	
	,Оценка int)
	
insert into @t(
	Дата_экзамена 
	,Название_курса 
	,ФИО_студента
	,Должность
	,Оценка)
select
	'20120202','Механика','Иванов Иван Михайлович','Студент 3 курса',3
union all select	
	'20110104','Химия','Ололоева Вера Петровна','Гордость ВУЗа',5
union all select	
	'20120228','Физика','Иванов Иван Михайлович','Студент 3 курса',	4
union all select	
	'20121104','Механика','Иванов Иван Михайлович','Студент 4 курса',5

select top 1 with ties
		t.Дата_экзамена 
		,t.Название_курса 
		,t.ФИО_студента
		,t.Должность
		,t.Оценка
from (
	select
		Дата_экзамена 
		,Название_курса 
		,ФИО_студента
		,Должность
		,Оценка
		,row_number() over (partition by ФИО_студента,Название_курса order by  Дата_экзамена desc)  N
	from @t t) t
order by
	t.N


Сегодня делаю все что угодно, только бы не работать :)
Gagarin_74
Дата: 06.02.2013 16:24:40
Спасибо!
Сейчас начну "переваривать" и переносить на проект.
Добрый Э - Эх
Дата: 06.02.2013 16:24:59
VladimirKr,

прошел бы по ссылке от Гостя333. Там всё это уже давно есть, так что можешь расслабиться и дальше ничего не делать. ;)
Добрый Э - Эх
Дата: 06.02.2013 16:26:13
Gagarin_74,

ну и ты по ссылке сходи, поизучай чего там и как. методов-то описано - вагон и маленькая тележка. Все основные способы перечислены. Осталось выбрать наиболее подходящий.