2013-10-08 242 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」代表什麼? - 什麼是「日期」?你不應該說你的專欄好一點嗎?另外爲什麼你將團隊名稱存儲在單獨的表格中? –

回答

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 

ADDING 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)