我遵循了許多關於從一組行中選擇MAX的建議的優秀建議。MAX在羣組上返回多個值,但具有相同的日期,但時間不同
我有一個歷史文件,我只想每個項目編號的頂部日期和評論。我從這個信息中創建了一個Boxi宇宙中的派生表。這一切都非常順利,但如果在同一天有兩個條目,但是時間不同,它們都會返回。這在隨後的報告中重複了該條目。有什麼方法可以使MAX命令下降到日期字段的時間級別?
數據庫是SQL Server 2005中
-------------的Sql用於派生表
Select
Projectno, Comment, CreatedOn
from
ReportHistory
Where
ReportHistory.ItemName=('ProjectCode1')
and
CreatedOn in(Select max(CreatedOn) FROM ReportHistory group by Projectno)
------------ -------示例數據庫
Projectno Comment Created on
1 Started 2013-01-04 11:04:00
2 Late 2013-01-06 11:22:00
3 Late 2013-01-07 11:06:00
1 On Time 2013-01-08 11:01:00 *these two both get selected*
1 Late 2013-01-08 12:05:00 *these two both get selected*
3 Back on schedule 2013-01-08 14:20:00
2 Still overdue 2013-01-09 09:01:00
我試圖運行原始查詢和CTE,對於我而言,使用SQL2008和原始帖子中的示例數據,兩個查詢都會得到相同的結果。子查詢** SELECT MAX(CreatedOn)FROM ReportHistory GROUP BY Projectno **確實返回正確的3行,並從我可以看到原始查詢應該工作。 – jpw
@jpw它會爲發佈的數據返回相同的結果,但op很可能會使用更多的數據。如果在與另一個projectno創建的最大日期相同的日期創建了一個projectno行,那麼原始查詢將返回錯誤結果 – Lamak
是的,現在我看到了該錯誤。 – jpw