选择数据集并在SQL Server中创建新列

时间:2015-02-02 22:22:49

标签: sql sql-server

在SQL Server中,您可以选择第一组值(即周数1 - 52),在新列中为它们提供另一个值,然后选择下一批值。

我遇到的问题是我正在处理的数据表中包含每个财政年度的周数,从10月1日之后的第一个星期日开始。因此,每个财政年度只需迭代1 - 52。

我试图在一个视图中创建一个列,抓住前52个给他们一个财政年度值1,然后抓住下一个52并给他们一个财政年度值2等(显然从第1年开始第一个记录)。我也有周结束日期列。

以下是该表的摘录:

enter image description here

这可能吗?

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