我有以下SQL语句。我需要使用System.RevisedDate
为每个System.Id选择最新记录SELECT [System.Id],[System.RevisedDate], [System.Title], [System.State], [System.Reason], [System.CreatedDate], [System.WorkItemType], [System.TeamProject],
[Microsoft.VSTS.Scheduling.RemainingWork], [Microsoft.VSTS.Scheduling.CompletedWork], [Microsoft.VSTS.CMMI.Estimate]
FROM WorkItems
WHERE ([System.WorkItemType] = 'Change Request') AND ([System.CreatedDate] >= '09/30/2008') AND ([System.TeamProject] NOT LIKE '%Deleted%') AND
([System.TeamProject] NOT LIKE '%Sandbox%')
你能帮忙吗?
答案 0 :(得分:3)
试试这个:
SELECT * FROM WorkItems w
JOIN (
SELECT [System.Id],MAX([System.RevisedDate])
FROM WorkItems
WHERE ([System.WorkItemType] = 'Change Request')
AND ([System.CreatedDate] >= '09/30/2008')
AND ([System.TeamProject] NOT LIKE '%Deleted%')
AND ([System.TeamProject] NOT LIKE '%Sandbox%')
GROUP BY {System.Id]
) x ON w.[System.Id] = x.[System.Id] AND w.[System.DateRevised] = x.[System.DateRevised]
答案 1 :(得分:1)
一般来说,它应该是像
这样的东西SELECT ID,DATE_FIELD,FIELD1,FIELD2
FROM TBL1 AS A WHERE DATE_FIELD >= ALL (
SELECT DATE_FIELD FROM TBL1 AS B
WHERE A.ID = B.ID
)
答案 2 :(得分:1)
或,(使用子查询)
SELECT ID,DATE_FIELD,FIELD1,FIELD2
FROM TBL1 T
Where DATE_FIELD =
(Select Max(Date_Field) From Tbl1
Where Id = T.Id)
但我无法破译你的示例查询......“System”是一个表吗?为什么Select子句中没有对WorkItem的引用?它似乎没有在一起...... ...
答案 3 :(得分:0)
尝试
SELECT [System.Id],[System.RevisedDate], [System.Title], [System.State], [System.Reason], [System.CreatedDate], [System.WorkItemType], [System.TeamProject],
[Microsoft.VSTS.Scheduling.RemainingWork], [Microsoft.VSTS.Scheduling.CompletedWork], [Microsoft.VSTS.CMMI.Estimate]
FROM WorkItems
Left JOIN (Select [System.Id],Max([System.RevisedDate]) group by [System.Id]) LatestItems
on Workitems.[System.Id] = LatestItems.[System.Id] and
Workitems.[System.RevisedDate] = LatestItems.[System.RevisedDate]
WHERE
([System.WorkItemType] = 'Change Request') AND ([System.CreatedDate] >= '09/30/2008') AND ([System.TeamProject] NOT LIKE '%Deleted%') AND
([System.TeamProject] NOT LIKE '%Sandbox%')
答案 4 :(得分:0)
我喜欢亚历克斯的回答,但我想我会投入另一种可能性。对不起,没有机会测试它。 : - )
SELECT WorkItems.[System.Id], WorkItems.[System.RevisedDate], [System.Title], [System.State], [System.Reason], [System.CreatedDate], [System.WorkItemType], [System.TeamProject],
[Microsoft.VSTS.Scheduling.RemainingWork], [Microsoft.VSTS.Scheduling.CompletedWork], [Microsoft.VSTS.CMMI.Estimate]
FROM WorkItems join (SELECT [System.Id],max([System.RevisedDate]) [MaxDate]
FROM WorkItems
WHERE ([System.WorkItemType] = 'Change Request') AND ([System.CreatedDate] >= '09/30/2008') AND ([System.TeamProject] NOT LIKE '%Deleted%') AND
([System.TeamProject] NOT LIKE '%Sandbox%')
group by [System.Id]) MaxDates
on WorkItems.[System.Id] = MaxDates.[System.Id]
and WorkItems.[System.RevisedDate] = MaxDates.[MaxDate]