2011-01-23 62 views
1

我有行日期列。我需要找到最接近每週結束的值。查找最近的最後一天的日期

例如: 對於1月3日 - 9日的第4,5,6月份的價格,將於1月6日返回,而第10周至16月1日的價格將從10,11月份返回至1月11日。

所以出含有4,5,6,10,11揚行,查詢應該返回週四6和週二1月11日

希望這是有道理的。

回答

1

您需要說明您正在使用哪個RDBMS以獲得更好的答案。除非您使用SET DATEFIRST改變周的第一天,「周」,從週日至週六運行:

對於SQL Server,你可以使用這個

select MAX(date) 
from #tmp 
group by DATEPART(wk, date) 

注。

要運行週一至週日,使用這個代替

select MAX(date) 
from #tmp 
group by DATEPART(wk, date-1) 

測試表使用

create table #tmp (date datetime) 
insert #tmp select '20110104' 
insert #tmp select '20110105' 
insert #tmp select '20110106' 
insert #tmp select '20110110' 
insert #tmp select '20110111' 
+0

優秀的,謝謝。 – Marcel 2011-01-23 12:35:16