2014-10-16 52 views
0

SQL Server 2008 R2。TSQL相對星期編號

場景: 我有一個表字段WeekNr,它是一週的數字。本週是42,上週爲41,等等,等等

挑戰: 我「翻譯」這個編號相對編號,邏輯如下:

如果本週第42周,那麼我的觀點必須返回0.對於第41周,它是-1,第40周將是-2,依此類推,直到-12周。最大的WeekNr肯定是第0周。

問題: 如何解決這個問題?

+0

所以,'WeekNr - DATEPART(WEEK,GETDATE())'? – Lamak 2014-10-16 14:45:05

+0

這有點不清楚。什麼是零點? – 2014-10-16 14:47:59

+0

零點是表中最大的一週數。它不基於GETDATE()。 – KathyBlue 2014-10-16 14:50:53

回答

0

這將工作:

WeekNr - MAX(WeekNr) 
+1

雖然不是字面上的。它必須是'WeekNr - MAX(WeekNr)OVER()'或類似'WeekNr - (SELECT MAX(WeekNr)FROM dbo.YourTable)'。或者你可以'CROSS JOIN(SELECT MAX(WeekNr)FROM dbo.YourTable)AS x(MaxWeekNr)',然後你可以在SELECT子句中做'WeekNr - x.MaxWeekNr'。 – 2014-10-20 05:27:26

+0

的確,我最終使用了CROSS JOIN!謝謝,Andriy! – KathyBlue 2014-10-21 14:04:33