我需要从返回所有行的表中选择Max id

时间:2016-04-20 15:50:21

标签: sql sql-server max

我希望得到一些帮助,而且我可以清楚地解释自己需要做些什么。

我有以下查询:

SELECT        
    id.ItemId, id.DocId AS LastVersion, 
    MONTH(d.docUploadDt) as MontUploaded, 
    YEAR(d.docUploadDt) as YearUploaded
FROM
    dbo.ItemDocument id 
INNER JOIN    
    dbo.Documents d on id.docId = d.docId
GROUP BY 
    ItemId, id.DocId, d.docUploadDt

这将返回这样的数据(这是一个特定itemId的示例):

ItemId  LastVersion MontUploaded    YearUploaded
1728903   1544371        2               2016
1728903   1544372        2               2016
1728903   1544373        3               2016
1728903   1544374        4               2016
1728903   1544375        4               2016
1728903   1544376        4               2016

我的目的是检索每个月上传的文档的最后一个版本。我想得到以下结果

ItemId  LastVersion MontUploaded    YearUploaded
1728903   1544372        2               2016
1728903   1544373        3               2016
1728903   1544376        4               2016

我无法弄清楚如何使用MAX语句。任何人都可以帮我吗?

提前致谢,

塞尔吉奥

1 个答案:

答案 0 :(得分:1)

您需要max月份和年份的uploaddate,itemid并选择SELECT id.ItemId, MAX(id.DocId) AS LastVersion, MONTH(d.docUploadDt) as MontUploaded, YEAR(d.docUploadDt) as YearUploaded FROM dbo.ItemDocument id INNER JOIN dbo.Documents d on id.docId = d.docId GROUP BY id.ItemId,YEAR(d.docUploadDt),MONTH(d.docUploadDt) docid。

{{1}}