SQL Server 2008 R2。TSQL相對星期編號
場景: 我有一個表字段WeekNr,它是一週的數字。本週是42,上週爲41,等等,等等
挑戰: 我「翻譯」這個編號相對編號,邏輯如下:
如果本週第42周,那麼我的觀點必須返回0.對於第41周,它是-1,第40周將是-2,依此類推,直到-12周。最大的WeekNr肯定是第0周。
問題: 如何解決這個問題?
SQL Server 2008 R2。TSQL相對星期編號
場景: 我有一個表字段WeekNr,它是一週的數字。本週是42,上週爲41,等等,等等
挑戰: 我「翻譯」這個編號相對編號,邏輯如下:
如果本週第42周,那麼我的觀點必須返回0.對於第41周,它是-1,第40周將是-2,依此類推,直到-12周。最大的WeekNr肯定是第0周。
問題: 如何解決這個問題?
這將工作:
WeekNr - MAX(WeekNr)
雖然不是字面上的。它必須是'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
的確,我最終使用了CROSS JOIN!謝謝,Andriy! – KathyBlue 2014-10-21 14:04:33
所以,'WeekNr - DATEPART(WEEK,GETDATE())'? – Lamak 2014-10-16 14:45:05
這有點不清楚。什麼是零點? – 2014-10-16 14:47:59
零點是表中最大的一週數。它不基於GETDATE()。 – KathyBlue 2014-10-16 14:50:53