2014-10-16 58 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