在SQL Server中,您可以选择第一组值(即周数1 - 52),在新列中为它们提供另一个值,然后选择下一批值。
我遇到的问题是我正在处理的数据表中包含每个财政年度的周数,从10月1日之后的第一个星期日开始。因此,每个财政年度只需迭代1 - 52。
我试图在一个视图中创建一个列,抓住前52个给他们一个财政年度值1,然后抓住下一个52并给他们一个财政年度值2等(显然从第1年开始第一个记录)。我也有周结束日期列。
以下是该表的摘录:
这可能吗?
答案 0 :(得分:2)
离开星期日和Octobers。如果我理解正确,您只需要按照结束日期的顺序为每个星期编号分配一个等级。
请尝试此操作(但请先使用表格或交易的副本进行检查;当然T
是您表格的名称):
update T
set fiscal_year = YearNumbers.FiscalYear
from T
inner join
(
select WeekEndingDate, WeekNumber, DENSE_RANK() over (partition by WeekNumber order by WeekEndingDate) as FiscalYear
from T
) as YearNumbers
on T.WeekEndingDate = YearNumbers.WeekEndingDate and T.WeekNumber = YearNumbers.WeekNumber