2013-10-08 3 views
0
SELECT  dbo.Team.ID, dbo.Team.Comment, dbo.Team.Date, dbo.TeamName.Name, dbo.Contacts.ContactName 
FROM  dbo.Team 
INNER JOIN dbo.TeamName ON dbo.Team.ID = dbo.TeamName.id 
INNER JOIN dbo.Contacts ON dbo.Team.ContactID = dbo.Contacts.ContactID 
WHERE  dbo.TeamName.idstatus = 'Active' 

Я пытаюсь запросить его таким образом, что это только дает мне запись с самой последней датой, но она становится немного запутанной, потому что я уже вытягивать данные из 3 таблицы и не знает, как использовать MAX(date) здесь.Выберите Самые новой Дату

+1

Можете ли вы показать образцы данных и желаемые результаты? То, что вы пытаетесь сделать, немного смущает нас. Вы пытаетесь получить одну строку за команду? Что означает 'Team.Date' -' Date' WHAT? Разве вы не должны называть свои столбцы немного лучше? Также почему вы храните имя команды в отдельной таблице? –

ответ

1
SELECT  dbo.Team.ID, dbo.Team.Comment, MAX(dbo.Team.Date) LatestDate, dbo.TeamName.Name, dbo.Contacts.ContactName 
FROM  dbo.Team 
INNER JOIN dbo.TeamName ON dbo.Team.ID = dbo.TeamName.id 
INNER JOIN dbo.Contacts ON dbo.Team.ContactID = dbo.Contacts.ContactID 
WHERE  dbo.TeamName.idstatus = 'Active' 
GROUP BY dbo.Team.ID, dbo.Team.Comment, dbo.TeamName.Name, dbo.Contacts.ContactName 

ДОБАВЛЕНИЕ MAX) Функция (к вашей дате столбца и группы по всем столбцам с вами Последняя дата для комбинации значений во всех остальных столбцах.

0

Я предполагаю, что вы хотите фильтровать по dbo.Team.Date.

Измените положение WHERE на:

WHERE (dbo.TeamName.idstatus = 'Active') 
and (dbo.Team.Date=(select max(Date) from dbo.Team)) 
0

Использование GroupBy и Наличие:

SELECT  dbo.Team.ID, dbo.Team.Comment, MAX(dbo.Team.Date), dbo.TeamName.Name, dbo.Contacts.ContactName, 
FROM   dbo.Team 
INNER JOIN 
dbo.TeamName ON dbo.Team.ID = dbo.TeamName.id 
INNER JOIN 
dbo.Contacts ON dbo.Team.ContactID = dbo.Contacts.ContactID 
WHERE  (dbo.TeamName.idstatus = 'Active') 
GROUP BY dbo.Team.ID, dbo.Team.Comment, dbo.Team.Date, dbo.TeamName.Name, dbo.Contacts.ContactName 
HAVING dbo.Team.Date = MAX(dbo.Team.Date) 
Смежные вопросы